VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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)
のようにして切り出すことができます。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -