在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)
等值时,没有任何内容被打印出来(空白)。
这是为什么?它不会崩溃,所以它根本不是数组中的无效范围。
答案 0 :(得分:1)
您需要使用redim preserve
。你通过使用redim完成的工作是使用新大小重新设置(重新声明)数组并截断旧数据。所以你只有坐在那里的元素,其中没有任何内容。 preserve
时,redim
会保留元素中的数据。