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

キヨタツ
キヨタツの一言

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

今読んだ記事をシェアする

vba-thumb

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

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

このブログサイトが参考になった人は、いいねボタン! 更新情報も受け取れます!

arrow
デル株式会社
  • Pocket
  • このエントリーをはてなブックマークに追加

キヨタツ

キヨタツ

WEBを中心に、色々な制作をする個人事業主です。過去、エンジニア&webディレクターで会社勤めをしていました。エンジニアで勤めていた頃は、MATLAB/simulink/VBA/C/C++など扱っていました。生産管理、MECE、オブジェクト指向など、エンジニアの知識はweb業界に入っても、かなり役立ちます。性格は、自虐好きです。