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)しかし、またはなどの値を出力しようとするとlistRecords(2)、何も出力されません (空白)。

どうしてこれなの?クラッシュしないため、配列内の無効な範囲ではありません。

4

1 に答える 1

1

need to を使用しredim preserveます。redim を使用するだけで行ったことは、配列を新しいサイズで再ディメンション化 (再宣言) し、古いデータを切り捨てたことです。つまり、何も入っていない要素がそこにあるだけです。 preserveは、要素内のデータを保持しますredim

于 2012-05-01T14:50:50.240 に答える