传递动态数组:消除值

时间:2012-05-01 14:37:37

标签: arrays vba

在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)listRecords(2)等值时,没有任何内容被打印出来(空白)。

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

1 个答案:

答案 0 :(得分:1)

您需要使用redim preserve。你通过使用redim完成的工作是使用新大小重新设置(重新声明)数组并截断旧数据。所以你只有坐在那里的元素,其中没有任何内容。 preserve时,redim会保留元素中的数据。