[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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.