Как добавить изначально пустой массив строк в VBA? - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь добавить переменное количество элементов в массив строк.

Мой код находится в функции изменения рабочего листа:

            Dim StartNums(0 To 2) As String

            doneColor = RGB(175, 175, 175)

            cmt = FRg.Comment.Text


            rowLen = InStr(1, cmt, vbLf)
            If rowLen = 0 Then
                rowLen = Len(cmt)
            End If
            numChunks = rowLen / 32
            numRows = Len(cmt) / rowLen
'            For i = 1 To 12 'FRg.Comment.Shape.TextFrame.Characters.Count
'                With FRg.Comment.Shape.TextFrame.Characters(i, 1)
'                    If .Font.Strikethrough = True Then
'                        .Font.Color = vbGreen
'                    End If
'                End With
'            Next i
            MsgBox ("About to fill StartNums, nothing should be in it yet")
            For j = 0 To numChunks - 1
                MsgBox ("going to add stuff for chunk " & j)
                If Not UBound(StartNums) = 2 Then
'                    MsgBox ("resizing an empty array")
'                    ReDim Preserve StartNums(3) As Variant
'                Else
                    'MsgBox ("resizing a non-empty array")
                    ReDim Preserve StartNums(UBound(StartNums) + 3) As String
                End If

                StartNums(UBound(StartNums) - 2) = (j * 32) + 5 + (0 * 9)
                StartNums(UBound(StartNums) - 1) = (j * 32) + 5 + (1 * 9)
                StartNums(UBound(StartNums) - 0) = (j * 32) + 5 + (2 * 9)
            Next j

Теперь, когда я go в В листе ReDim есть ошибка компиляции Array already dimensioned. Я знаю, что он уже измерен, поэтому я переопределяю его.

Как добавить еще 3 пробела в массиве?

1 Ответ

4 голосов
/ 14 января 2020

Когда вы изначально Dim это, вы не можете дать ему размер, если планируете изменить размер позже:

, поэтому вместо

Dim StartNums(0 To 2) As String

Вы бы использовали

Dim StartNums() As String

, а затем на следующей строке

ReDim StartNums(0 To 2)

примечание, вы также можете использовать это, так как предполагается, что оно по умолчанию равно 0.

ReDim StartNums(2)

Это выполнит sh то же самое, но затем вы можете использовать Redim Preserve, чтобы изменить его размер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...