Excel VBAで、配列の要素数を最初から決めず、for文に応じて動的に数を決める方法

エンジニア

※本記事は作成日より一年以上が経過しています。最新の情報ではないので、ご注意ください。

読了の目安時間: 127

Excel VBAで、配列の要素数を動的に増やしたい時は、ReDimのPreserveを利用します。

Sub test1()

  Dim Ar() As Variant
  Dim i As Integer

  For i = 0 To 10
    ReDim Preserve Ar(i)
    Ar(i) = "入力データ" & i
  Next i

End Sub

結果はこちら。

ar1

変数iに応じて配列の数が増えていることが分かります。この時、最初のAr()宣言時に数字を入れてしまうとReDimが使えないので注意しましょう。

多次元配列の場合

Excel VBAの仕様上、多次元配列で要素数を動的に増やすことはできません。Preserve オプションは二次元配列等には使えず、「次元が2つ以上ある動的配列の場合は最後の次元のサイズのみ変更できる」とのことです。

× Ar(i,j)
○ Ar(0,j)

Sub test2()

  Dim Ar() As Variant
  Dim j As Integer

  For j = 0 To 5
    ReDim Preserve Ar(0, j)
    Ar(0, j) = "入力データ" & j
  Next j

End Sub

結果はこちら。

ar2

配列は一次元分しか動的に要素数を増やせないことを覚えておきましょう。

▼詳しくはこちら
https://msdn.microsoft.com/ja-jp/library/w8k3cys2.aspx

最後に一言

多次元になるほど、データ構造が難しくなります・・・。

本記事を気に入って頂けたら、facebookの「いいね!」を是非!

Excel VBAで、配列の要素数を最初から決めず、for文に応じて動的に数を決める方法


本記事のシェアはこちらから!

  • このエントリーをはてなブックマークに追加
  • Pocket

PROFILE

yoshi

follow us in feedly

WEB制作をやっているYoshiと申します。PVは月間10万程度。過去、エンジニアの頃は、MATLAB/simulink/VBA/C/C++など扱っていました。生産管理、MECE、オブジェクト指向など、当時に得た知識はweb業界に入っても、かなり役立っています。