为动态数组元素赋值会导致下标超出范围错误

时间:2016-04-26 16:19:57

标签: excel-vba vba excel

Sub ArrTest()
Dim Arr() As Variant

    Arr(1, 1) = "Test"

End Sub

我没有对数组进行维度,因为我不知道它需要的大小。我最终会将这个数组写入电子表格。我试图将将在未来写入的单元格的左上角分配为" test"。

现在如果我理解正确,动态数组开始索引为0,所以第一个元素实际上是Arr(0,0)。我尝试了Arr(0,0)并得到了同样的错误。

我想真正的问题是:

如何为未定义动态数组的元素赋值?

1 个答案:

答案 0 :(得分:1)

在使用之前,您必须将数组调暗到一个大小。这很简单:

Sub ArrTest()
    Dim Arr() As Variant

    redim Arr(0 to 1, 0 to 1)
    Arr(1, 1) = "Test"

    redim preserve Arr(0 to 2, 0 to 1)
    Arr(2, 1) = "Test2"

End Sub

redim方法将重新定义数组。使用关键字Preserve将确保在重新定标期间存储在数组中的数据不会丢失。