[VBA] カウンターを用いずに動的配列にデータを格納する
以前他の人が作ったプログラムを見ようとしたときに、静的配列でDim Array(9999) As String とかで配列が生成されていました。
静的配列を使うと、データの最後がわからず、データの読み込み時にデータが空欄(””)となっていないかなどの不要な判定が入り、プログラムが複雑になってしまいます。
動的配列にすると最後の配列番号がUbound(Array)などで取得できるのでプログラムの可読性があがりますが、この場合であっても、データ格納にカウンターなどを使うと、カウンターの乱立等で可読性が落ち、困ることになります。
カウンターを用いずに、配列にデータを追加していくには、以下のような方法が比較的スマートかと考えています。
If IsInitArrayString(Array) then
Redim Preserve Array(Ubound(Array) +1)
Array(Ubound(Array)) = Data
Else
Redim Array(0)
Array(0) = Data
End if
ここでIsInitArrayStringというのは、配列が初期化されているかの判定用関数ですが、標準ではありませんので自分で作ります(別記事を参考にしてください)。
これでも7行もあるので、関数化したほうがよさげですが、その関数名を忘れてしまうので(w)、こんなコードを書いています。
ではでは。
この記事が気に入ったらサポートをしてみませんか?