投稿日 | : 2003/04/08(Tue) 10:52 |
投稿者 | : たたみ |
Eメール | : hitomi_n_1204@hotmail.com |
URL | : |
タイトル | : Re^2: 次元数の異なる配列の代入について |
やはり、できないんですねー。
1次元配列のものに、2次元配列データを
vntTest2=vntTest1 とやると、
2次元に拡張されてしまうんですよね。
ありがとうございました!代替案、
参考にさせていただきます。
> > 次元数の異なる配列の代入で、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)
> のようにして切り出すことができます。