[[20060516122501]] 『2次元の動的配列ReDim について』(ろっしい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『2次元の動的配列ReDim について』(ろっしい)

<やりたいこと>
配列の行数がどんどん増えていく時に、最初にデータ数が確定していない場合、ReDim 機能を使って
ループを回すたびに配列の次元(行数)の再定義を行って、最終的にデータがもし100行であれば
100行の行数を持つ配列を作りたいのです。1次元配列については、過去ログと教科書でやってみて
上手く行ったのですが、2次元にすると上手く行かない状況です。

<サンプルプログラム>

Option Base 1

Sub Macro1()

Dim 配列() As Variant

Dim i, j As Integer

For i = 1 To 3

    ReDim Preserve 配列(i, 2)
    配列(i, 1) = "A"
    配列(i, 2) = "あ"
Next i

End Sub

<結果>
i=2 のところでエラーが起こり、ループが止まってしまいます。

このような場合、どうやって解決したらよろしいのでしょうか?
ご教示いただければ幸いです。よろしくお願いしますm(__)m


 >i=2 のところでエラーが起こり、ループが止まってしまいます。
 動的配列は、最後の次元のみ変更できるようです。

 ヘルプより抜粋
 次元が 2 つ以上ある動的配列の場合、最後の次元のサイズのみを変更でき、その配列に格納されている値は保持されます

 検証してないですが、、、
 配列の縦・横を入れ替えて考えるのはいかがでしょう?
 
 (キリキ)(〃⌒o⌒)b

 次のような構文ならうまくいきます。
For i = 1 To 3
    ReDim Preserve 配列(2, i)
    配列(1, i) = "A"
    配列(2, i) = "あ"
Next i
結果は
配列(1)
    配列(1,1) = "A"
    配列(1,2) = "A"
    配列(1,3) = "A"
配列(2)
    配列(2,1) = "あ"
    配列(2,2) = "あ"
    配列(2,3) = "あ"
のようになります。
(みやほりん)(-_∂)b


ありがとうございます。最後の次元のみ変更できるのですか。

縦横の入れ替えやってみます。
(ろっしい)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.