作为VBA的初学者,我对以下问题感到困惑:
Dim DynArray() As Double
ReDim DynArray(0 To 0)
DynArray(0) = 100
ReDim Preserve DynArray(5 To 5) 'subscript out of range
DynArray(5) = 100
为什么它不起作用?以及如何在保留原始数组的值的同时更改VBA中数组的上限和/或下限? 谢谢。
答案 0 :(得分:2)
答案 1 :(得分:0)
以上答案是正确的,但我只是想补充一些细节。
如果您使用保留关键字,则 只能调整最后一个数组的大小 维度,您无法更改维度数 。对于 例如,如果您的数组只有一个维度,则可以调整其大小 维度,因为它是最后也是唯一的维度。但是,如果你的 数组有两个或多个维度,可以只更改大小 最后一个维度,仍然保留数组的内容。该 以下示例显示了如何增加最后一个的大小 动态数组的维度,不删除任何现有数据 包含在数组中。
此示例使用ReDim语句为动态数组变量分配和重新分配存储空间。它假定Option Base为1。
Dim MyArray() As Integer ' Declare dynamic array.
Redim MyArray(5) ' Allocate 5 elements.
For I = 1 To 5 ' Loop 5 times.
MyArray(I) = I ' Initialize array.
Next I
下一个语句调整数组大小并删除元素。
Redim MyArray(10) ' Resize to 10 elements.
For I = 1 To 10 ' Loop 10 times.
MyArray(I) = I ' Initialize array.
Next I
以下语句调整数组的大小,但不会删除元素。
Redim Preserve MyArray(15) ' Resize to 15 elements.
所以你的错误:ReDim Preserve DynArray(5 To 5)
你改变了下限。