#arrays #excel #vba #loops
#массивы #excel #vba #циклы
Вопрос:
У меня есть следующий код ниже, проблема в том, что размер массива «varray» не обновляется каждый раз, когда вставляется новая строка, я знаю это, проверяя значение varray каждый раз, когда новая строка вставляется с помощью кода в Excel. Это означает, что код остановится в конце фиксированного массива. Я попытался повторить в нескольких точках, чтобы посмотреть, сработало ли это, но это не так.
Sub test()
Dim i As Long
Dim numbers() As Integer
Dim varray As Integer
varray = Sheets("Original").Cells(Rows.Count, "A").End(xlUp).Row
ReDim Preserve numbers(varray)
For i = 10 To varray
ReDim numbers(varray)
If Cells(i, 16).Value <> "" Then
Cells(i 1, 16).EntireRow.Insert
Cells(i 1, 1).EntireRow.Value = Cells(i, 1).EntireRow.Value
Cells(i 1, 6).Value = Cells(i, 16).Value
Cells(i 1, 1).Value = 20305
Cells(i 1, 11).Value = ""
Cells(i 1, 12).Value = ""
Cells(i 1, 15).Value = ""
Cells(i 1, 16).Value = ""
i = i 1
ReDim numbers(varray)
End If
ReDim numbers(varray)
Next i
End Sub
Ответ №1:
Вы никогда не меняли значение varray
, поэтому ваши ReDim
операторы всегда изменяют размер массива до его начального значения.
varray
был назначен:
varray = Cells(Rows.Count, "A").End(xlUp).Row
Значение этой переменной не изменяется просто путем вставки ячеек / строк на листе.
Комментарии:
1. я предположил, что это изменение значения, как мне это добавить? @davidZemens
2.
varray = _some_value_
— Я не знаю, какую логику вам нужно использовать для ее увеличения, это может быть простоvarray = varray 1
или может потребоваться что-то другое.