Добавление и ведение ведущих нулей для почтовых индексов в CSV с использованием VBA - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть 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 Ответ

1 голос
/ 07 ноября 2019

В поддержку моего комментария я бы написал что-то вроде этого. Я также проверил бы, как говорит Рон, проверил, куда они упали раньше.

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
...