首页 > 解决方案 > 动态数组中何时需要 ReDim?

问题描述

我有一个关于 ReDim-ming 动态数组的简短问题 - 更准确地说,在哪些情况下需要它?

我知道ReDim Preserve array(x) As Variant在向数组中添加条目时需要这样做。调整/更改数组中的现有信息效果很好,例如:array(x) = "Added text " & array(x)

但是在处理动态数组时,是否还有其他情况需要担心 ReDim 甚至其他特殊要求?

我正在编写一个代码,其中将包含大型动态数组,这些数组在 For-looping 将日期写入另一张纸上的列表之前从许多不同的来源添加数据。我不能让将来出现错误,因为我错过了一些东西。

标签: excelvba

解决方案


ReDim用于改变数组的大小。您可以ReDim像这样未初始化的数组:

Dim arr() As Variant x = 200 ReDim arr(1 to x)

您也可以在初始化的数组上执行此操作:

Dim arr(1 to 2) As Variant ReDim arr(1 to 5)<-- 将删除以前存储的值

ReDim Preserve arr(1 to 5)<-- 将保留以前存储的值

请注意,使用 Preserve只会更改多维数组的最后一个维度,因此Dim arr(1 to 5, 1 to 2)如果要保留数据ReDim Preserve,只能将第二个维度从 更改1 to 21 to x

就像汤姆说的那样,在每个循环中更改数组的大小都会影响性能,因此您应该首先计算数组的最大大小,然后对其进行标注,或者将大小调整为超出您需要的大小,最后根据您的需要重新调整当你结束时。


推荐阅读