Я искал здесь ответ на мою проблему, но все еще не знаю, как ее решить, поэтому я обновляю тему.
У меня есть примитивная функция, которая выполняет поиск в рабочей таблице (столбец A)входные данные для Userform.TextBox1
, UserForm.Textbox2
и т. д. Когда определенная запись найдена, ей следует присвоить массиву саму запись и значения из следующих 3 или 4 ячеек из той же строки (каждая строка заканчивается «Конец»),Таким образом, у меня будет массив максимум из 4 столбцов и столько строк, сколько будет найдено записей. Первый цикл Do
работает идеально, но при этом увеличивается переменная size
(найденные записи), поэтому я увеличиваю строку массива, как я хотел, дает мне ошибку subscript out of range
.Я потратил на это целый день, но я не вижу, чего мне не хватает.Вот код:
Sub test()
Dim arr() As Variant
Dim i, size As Integer
Dim back As String
Cells(1, 1).Select
i = 0
size = 0
Do Until ActiveCell.Value = UserForm1.TextBox1.Value
ActiveCell.Offset(1, 0).Select
Loop
back = ActiveCell.Address
Do Until ActiveCell = "End"
size = size + 1
ReDim Preserve arr(1 To size, 1 To 4)
Do Until ActiveCell.Value = "End"
i = i + 1
arr(size, i) = ActiveCell
ActiveCell.Offset(0, 1).Select
Loop
Loop
Range(back).Offset(1, 0).Select
Do Until ActiveCell.Value = UserForm1.TextBox2.Value
ActiveCell.Offset(1, 0).Select
Loop
back = ActiveCell.Address
i = 0
Do Until ActiveCell = "End"
size = size + 1
ReDim Preserve arr(1 To size, 1 To 4) '"Subscript out of range" error occurs here
Do Until ActiveCell.Value = "End"
i = i + 1
arr(size, i) = ActiveCell
ActiveCell.Offset(0, 1).Select
Loop
Loop
End Sub