循环数组问题

时间:2018-03-17 21:50:42

标签: arrays vba

我正在尝试编写一个简单的数组,我写了很多数组,但我不明白为什么在这种情况下我没有得到理想的结果。

下面是我正在使用的代码,因此我生成一个报告名称并将它们放在一个数组中,以便稍后通过引用索引号进行检索,

所以循环中的调试工作,我可以看到存储的是,当我在循环外部时无法检索它,所以无法回忆。

有什么想法吗?

  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)

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