わかった。配列をy
正しく割り当てていないだけかもしれません。コメントで述べたように:
y(k) = x(i,j)
i/j 座標で表される値のみを配列に格納していますx
。
その時点でy(k)
配列全体を参照するには、次のようにします。x
y(k) = x
それでも機能しない場合は、他の何かが間違っている可能性があります。と呼ばれる 2x2 (基数 0) の配列がある例を次に示しbaseArray
ます。これには、いくつかの値を明示的に入力します。から反復しi = 0 to itLimit
、各反復内で、配列内の項目を反復処理し、値を 2 倍して、配列変数 に格納しますtmpArray
。値が変換されたら、それらを に保存し、次の反復arrContainer
に進みます。For i = 0 to itLimit
Sub FunWithArrays()
Dim itLimit As Integer '## Iteration limit.'
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim baseArray(2, 2) As Variant '## an example array.'
'## Put some dummy data in this array.'
baseArray(0, 0) = 1
baseArray(0, 1) = 65
baseArray(0, 2) = 13
baseArray(1, 0) = 14
baseArray(1, 1) = 29
baseArray(1, 2) = 44
baseArray(2, 0) = 9
baseArray(2, 1) = 16
baseArray(2, 2) = 33
Dim tmpArray(2, 2) As Variant '## This will temporarily hold values as we transform them.'
Dim arrContainer() As Variant '## an array of arrays, to store the iteration arrays.'
itLimit = 2 '## set a max iteration.'
For i = 0 To itLimit
'## Transform the base array somehow'
For j = LBound(baseArray, 1) To UBound(baseArray, 1)
For k = LBound(baseArray, 2) To UBound(baseArray, 2)
tmpArray(j, k) = baseArray(j, k) * 2
Next
Next
ReDim Preserve arrContainer(i)
arrContainer(i) = tmpArray
Next
Dim y As Variant
'## Now, refer to a single iteration stored in the arrContainer variable:
y = arrContainer(2)
End Sub
この最初のスクリーンショットでは、Locals
ウィンドウを使用して変数とその内容を確認しています。tmpArray
最初の反復の後、が入力され、 と同じ次元であることがわかりますbaseArray
が、その値は 2 倍になっています。

変数を調べるarrContainer
と、項目が 1 つしかないことがわかります。その項目はtmpArray
、上記の繰り返しで作成したものと同じ配列です。

最後の繰り返しの後、 3 つの項目 (ループarrContainer
ごとに 0 から 2) が含まれていることを確認できます。For i to itLimit
内部の各配列arrContainer
は、上記の繰り返しで作成された配列の 1 つと同じです。

次のようなアイテムを参照できるようになりました。
Dim y as Variant
y = arrContainer(2) '# or any in bounds index could be used instead of "2"'
最後に、VBE Locals ウィンドウを使用して確認しますy
。
