4

2次元配列を関数に渡すという興味深い状況があります。
配列はフォームレベルのスコープで宣言されて
います。実行可能な例があるVB6からコードの一部を書き直そうとしています。

Dim myArray(,) As Double

次に、データに従って配列が再調整および入力されるサブを取得します。これは、次のような象徴的な状況です。

Public Sub mySub(ByVal myArray(,) As Double)

    Dim temparray() As Double = {3, 5, 7, 9}
    For a As Double = 0 temparray.length - 1
         ReDim Preserve myarray(2, temparray(a))
    Next a

    myArray(1, 5) = 3.14
    ... etc...
End Sub

そして最後に、他のサブから配列内のデータを入力して読み取りたいと思います。

mySub(myArray)
Debug.Print(myArray(1, 5))

そしてここで私はエラーメッセージを受け取ります:

オブジェクト参照がオブジェクト インスタンスに設定されていません。

mySubのデータは正しく入力されていますが、subを呼び出してもこのデータが表示されません。
何を間違えると、このシナリオをどのように機能させることができますか?

4

1 に答える 1

10

これを行うことで解決できます:

Public Sub mySub(ByRef myArray(,) As Double)
    '...
End Sub

Sub の外部で変更を行うには、変数を参照する必要があります。

于 2013-01-24T12:19:10.770 に答える