У меня есть CSV-файл, который отправляется мне с почтовыми индексами, в которых отсутствуют начальные нули. Некоторые в пятизначном формате, другие в девятизначном формате, для которых мне не нужно включать тире.
Мне нужно добавить начальные нули и сохранить его как csv, который будет поддерживать начальные нули.
Columns(15).Select
Selection.NumberFormat = "@"
Dim ThisCell As Range
For Each ThisCell In Selection
If Len(ThisCell) <= 5 Then
ThisCell = "'" & Right("00000" & ThisCell, 5)
Else
ThisCell = "'" & Right("00000000" & ThisCell, 10)
End If
Next ThisCell
В настоящее время это не поддерживает начальные нули и приводит к зависанию файла и загрузке нескольких минут до следующего шага в vba.
1 ответ
В поддержку моего комментария я бы закодировал что-то в этом духе. Я бы также проверил, как говорит Рон, проверил, куда они упали раньше.
Sub TestPadding()
Dim r As Excel.Range
Dim c As Excel.Range
Application.Calculation = xlCalculationManual
Set r = ThisWorkbook.Worksheets("TestData").Range("a1:a10000")
For Each c In r.Cells
c.value = "'" & PadString(c.Text)
Next c
Application.Calculation = xlCalculationAutomatic
End Sub
Function PadString(strInput As String) As String
Dim b As Boolean
Dim l As Byte
b = Len(strInput) < 5
l = IIf(b, 5, 10)
PadString = Right(String(l, "0") & strInput, l)
End Function
Похожие вопросы
Новые вопросы
excel
Только для вопросов по программированию объектов или файлов Excel или по разработке формул. Вы можете комбинировать тег Excel с тегами и вопросами VBA, VSTO, C#, VB.NET, PowerShell, OLE и другими тегами и вопросами, связанными с программированием, если это применимо. НЕ используйте с другим программным обеспечением для работы с электронными таблицами, например [google-sheets].
selection
, если это возможно. Попробуйте задать диапазон, напримерfor each ThisCell in Sheets("test").range("a1:a10000")
.