見出し画像

[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)、こんなコードを書いています。

ではでは。


この記事が気に入ったらサポートをしてみませんか?