投稿時間:2003/04/08(Tue) 10:29 投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:Re: 次元数の異なる配列の代入について
> 次元数の異なる配列の代入で、1次元だけを代入する、というようなことは > 可能でしょうか? 残念ながらできません。
# 特定の条件を満たしている場合には、RtlMoveMemory APIで複写できる事もありますが…。
> Dim vntTest1() as variant > Dim vntTest2() as variant > Redim vntTest1(3,1),vntTest2(3) > と、宣言されていて、vntTest1の1次元目の値(vntTest1(0,0))を、 > vntTest2(0)に格納する方法です。
このような場合は、「配列の配列」の利用を検討してみてください。
つまり、元々のデータを Dim vntTest1() As Variant ReDim vntTest1(3, 1) vntTest1(0, 0) = "0行0列" vntTest1(0, 1) = "0行1列" vntTest1(1, 0) = "1行0列" vntTest1(1, 1) = "1行1列" vntTest1(2, 0) = "2行0列" vntTest1(2, 1) = "2行1列" vntTest1(3, 0) = "3行0列" vntTest1(3, 1) = "3行1列" Debug.Print vntTest1(2, 1) などとするかわりに、 Dim vntTest1() As Variant ReDim vntTest1(3) vntTest1(0) = Array("0行0列", "0行1列") vntTest1(1) = Array("1行0列", "1行1列") vntTest1(2) = Array("2行0列", "2行1列") vntTest1(3) = Array("3行0列", "3行1列") Debug.Print vntTest1(2)(1) のように保持しておくわけです。 (このような配列を「ジャグ配列:Jagged Arrays」といいます)
これならば、 Dim vntTest2() As Variant, vntTest3() As Variant vntTest2 = vntTest1(1) vntTest3 = vntTest1(2) のようにして切り出すことができます。
|