ReDim不在for循环中工作,没有重复数组大小

时间:2016-10-13 15:37:59

标签: arrays excel vba loops

我在下面有以下代码,问题是数组大小" 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

1 个答案:

答案 0 :(得分:1)

您从未更改过varray的值,因此您的ReDim语句始终会将数组的大小调整为初始值。

varray已被分配:

varray = Cells(Rows.Count, "A").End(xlUp).Row

只需在工作表中插入单元格/行即可更改此变量的值。