我正在尝试编写一个简单的数组,我写了很多数组,但我不明白为什么在这种情况下我没有得到理想的结果。
下面是我正在使用的代码,因此我生成一个报告名称并将它们放在一个数组中,以便稍后通过引用索引号进行检索,
所以循环中的调试工作,我可以看到存储的是,当我在循环外部时无法检索它,所以无法回忆。
有什么想法吗?
For i = 1 To num
reportname = API & SetPeriod & APIEnd
ReDim retrieve(1 To i)
retrieve(i) = reportname
SetPeriod = SetPeriod + 1
Debug.Print retrieve(i)
Next i
ReDim retrieve(1 To 4)
Debug.Print retrieve(2)
Debug.Print retrieve(2)
答案 0 :(得分:1)
如果您想在调整数组大小时保持数值,则需要在Preserve
时使用ReDim
选项。
所以你的陈述如下:
ReDim Preserve retrieve(1 To i)
但如果可能的话,请尝试一次声明数组的大小,因为多次更改其大小会导致性能问题,尤其是在使用Preserve
时。
答案 1 :(得分:1)
由于您在输入num
循环之前已设置并获取变量For i = 1 to Num
的值,因此您可以使用该值将Redim
数组调整为正确的大小,只需使用{{ 1}},每次进入循环时都不需要ReDim retrieve(1 To num)
。
修改后的代码
Redim