可以有一个没有上限的数组吗?

时间:2016-05-23 13:49:14

标签: excel vba

我根据是否满足工作表中的条件来填充数组。问题是,我不知道数组有多长,因为它可能比数据集本身更大(将有一些条目的重复)。我所拥有的是:

Sub ArrayTest
Dim MyArray as Variant
Dim i as Long
Dim index as Long
Dim lastRow As Long

lastRow = Cells(Rows.Count, 1).End(xlUp).row
ReDim myarray(index)

For i = 1 to lastrow
    If (something) then
        index = index  + 1
        ReDim Preserve recordArrray(Index)
        recordArrray(Index) = range("A" & i)

    End If 
Next
End Sub

但是,一旦index到达lastrow,我就会收到subscript out of range错误。我可以通过简单地用ReDim替换ReDim myarray(1 to 100000000).行来避免这种情况。显然,这不是一个理想的解决方案。

我可以创建一个数组,而不必在创建之前定义上限吗?

1 个答案:

答案 0 :(得分:0)

数组总是必须同时具有上限和下限(尽管您可以使用Redim动态更改边界)。

我的猜测是,您遇到的问题是索引的起始值为0 ,这超出了数组的合法范围。我怀疑这可以解决眼前的问题:

Sub ArrayTest
Dim MyArray as Variant
Dim i as Long
dim index as Long
Dim lastRow As Long

lastRow = Cells(Rows.Count, 1).End(xlUp).row
ReDim myarray(1 to lastrow)

For i = 1 to lastrow
    If (something) then
        index = index  + 1
        recordArrray(Index) = range("A" & i)
    End If 
Next
End Sub