该示例使用 ReDim 语句为动态数组变量分配和重分配存储空间。假设 Option Base 是 1。Dim MyArray() As Integer '声明动态数组。 Redim MyArray(5) '分配 5 个元素。 For I = 1 To 5 '循环 5 次。 MyArray(I) = I '初始化数组。 Next I下一条语句重定义该数组的大小,并清除其中的元素。Redim MyArray(10) '大小重定为 10 个元素。 For I = 1 To 10 '循环 10 次。 MyArray(I) = I '初始化数组。 Next I下面的语句重定义该数组的大小,但没有清除其中的元素。Redim Preserve MyArray(15) '大小重定为 15 个元素。
加上Preserve关键字比如: Dim X() as byte redim x(10) for i=1 to 10 x(i)=i next ReDim Preserve X(20) for i=1 to 20 Debug.Print x(i); next debug.print
. . .
ReDim Preserve X(10, 10, 15)同样地,在使用 Preserve 时,只能通过改变上界来改变数组的大小;改变下界则会导致错误。如果将数组改小,则被删除的元素中的数据就会丢失。如果按地址将数组传递给某个过程,那么不要在该过程内重定义该数组的各维的大小。
Redim MyArray(5) '分配 5 个元素。
For I = 1 To 5 '循环 5 次。
MyArray(I) = I '初始化数组。
Next I下一条语句重定义该数组的大小,并清除其中的元素。Redim MyArray(10) '大小重定为 10 个元素。
For I = 1 To 10 '循环 10 次。
MyArray(I) = I '初始化数组。
Next I下面的语句重定义该数组的大小,但没有清除其中的元素。Redim Preserve MyArray(15) '大小重定为 15 个元素。
Dim X() as byte
redim x(10)
for i=1 to 10
x(i)=i
next
ReDim Preserve X(20)
for i=1 to 20
Debug.Print x(i);
next
debug.print