VBA Макросы. Как добавить строки в двумерный массив?

Автор Посетитель, 24 ноября 2021, 17:26

Посетитель

Как добавить строки в двумерный массив?

Пытаюсь добавить строки таким кодом, но происходит ошибка: Sabscript out of range (run-time error 9):

Sub Макрос()
   
    Dim Arr()
   
    ReDim Arr(1 To 1, 1 To 2)
    ReDim Preserve Arr(1 To 2, 1 To 2)
   
End Sub

Администратор

В двумерный массив нельзя добавить строки с помощью ReDim Preserve - такая возможность не предусмотрено. В двумерный массив с помощью ReDim Preserve можно добавить только столбцы.

Чтобы добавить строки в двумерный массив, нужно создать вспомогательный массив с нужным количеством строк и столбцов. Затем нужно скопировать все ячейки из исходного массива во вспомогательный. Затем нужно скопировать вспомогательный массив в исходный.

Код
Sub Макрос()
   
    Dim Arr(), Aux()
    Dim i As Long, j As Long
   
    ReDim Arr(1 To 1, 1 To 2)
    ReDim Aux(1 To 2, 1 To 2)
    For i = 1 To UBound(Arr, 1)
        For j = 1 To UBound(Arr, 2)
            Aux(i, j) = Arr(i, j)
        Next j
    Next i
    Arr() = Aux()
   
End Sub
[свернуть]