2012-05-01 79 views
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 

值正確地存儲到該陣列之後,另一個函數(提前)稍後被調用(以及PidArr陣列進入到它)

Advance listRecords:=PidArr 

函數看起來象:

Sub Advance(ByRef listRecords() As String) 

Advance我可以打印類似:

UBound(listRecords) 

,它返回一個6

但是,當我嘗試打印出來的值像listRecords(1)listRecords(2)等,沒有被打印出來(空白) 。

這是爲什麼?它不會崩潰,所以根本不是數組中的無效範圍。

+0

你必須告訴我們相關的代碼。就像它被填充的位置,它傳入的位置以及Advance子例程中的內容。 – RBarryYoung

+0

此VBA託管什麼應用程序? – RBarryYoung

+0

@RBarryYoung BostonWorkStation – JBurace

回答

1

您使用需要redim preserve。你剛剛使用redim所做的工作是用新的大小對數組進行重新規劃(重新聲明)並截斷舊數據。所以你只需要坐在那裏沒有任何東西的元素。當您redim時,preserve將保留元素中的數據。

+0

啊,是的,我現在看到它。 – RBarryYoung