我在下面有以下代码,问题是数组大小" varray"每次插入新行时都不会更新,我通过每次通过Excel中的代码插入新行时检查varray的值来了解这一点。这意味着代码将在固定数组的末尾停止。我试图在多个点上进行重新分析,看看是否有效,但事实并非如此。
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
答案 0 :(得分:1)
您从未更改过varray
的值,因此您的ReDim
语句始终会将数组的大小调整为初始值。
varray
已被分配:
varray = Cells(Rows.Count, "A").End(xlUp).Row
只需在工作表中插入单元格/行即可更改此变量的值。