1

在 VBA 中,我将值存储到一个动态数组中,该数组PidArr在一个名为Unlock. 数组开始如下:

Dim PidArr() As String
ReDim PidArr(1 To 2)

插入的数据如下所示:

      ...within a loop
        PidArr(Count) = LineStr 'this is a string containing the data.
        Logging "Inserted " & PidArr(Count) 'this correctly shows the data has inserted.
        ReDim PidArr(1 To Count + 1) 'resize the array more

在将值正确存储到该数组中后,稍后会调用另一个函数(Advance)(并将PidArr数组传递给它)

Advance listRecords:=PidArr

该函数如下所示:

Sub Advance(ByRef listRecords() As String)

Advance我可以打印类似的东西:

UBound(listRecords)

它返回一个 6。

但是当我尝试打印出诸如listRecords(1)or之类的值时listRecords(2),什么都没有打印出来(空白)。

为什么是这样?它不会崩溃,因此它根本不是数组中的无效范围。

4

1 回答 1

1

您使用需要redim preserve. 您仅使用 redim 所做的就是使用新大小重新定义(重新声明)数组并截断旧数据。所以你只是有元素坐在那里,里面什么都没有。 preserve时将保留元素中的数据redim

于 2012-05-01T14:50:50.240 回答