この記事では以下の方法を知ることができます。
VBAで動的配列を使用する方法
動的配列を使用するプログラム
以下のプログラムでは動的配列を使用してデータを格納します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Sub Sample() ' 大きさを指定せずに配列を定義 Dim arr() As Variant ' 配列の要素番号を0で初期化 Dim arrIdx As Long: arrIdx = 0 ' 最終行を取得する LastRow = Cells(Rows.Count, 1).End(xlUp).Row ' 1行目から最終行までの繰り返し For i = 1 To LastRow ' 配列の大きさを再定義(中身を保持) ReDim Preserve arr(arrIdx) ' 配列にデータを格納 arr(arrIdx) = Cells(i, 1).Value ' 配列の要素番号を更新 arrIdx = arrIdx + 1 Next End Sub |
使用している技術
動的配列を定義する
Dim arr() As Variant
公式の説明:変数を宣言して、記憶域を割り当てます。
配列を使用するにはDimステートメント使用し、配列を宣言します。このとき配列のサイズを指定せず括弧の中を空白にすることで、動的配列を宣言することができます。
配列のサイズを再定義する
配列のサイズを再定義するにはRedimステートメントを使用します。
ReDim Preserve arr(arrIdx)
公式の説明:プロシージャレベルで、動的配列変数の記憶域領域を再割り当てするために使用します。
配列 arr() のサイズを arrIdx に再定義しています。
配列の中身を保持する
以下のオプションを指定することで、配列の中身を保持したままサイズを変更することができます。
ReDim Preserve arr(arrIdx)
公式の説明:オプション。 最後のディメンションのサイズを変更するとき、既存の配列のデータを保持する際に使用されるキーワードです。
このオプションを使用しない場合、配列のサイズを変更すると同時に配列の中身が初期化されてしまいます。基本的に Preserve オプションをつけて使用するとよいでしょう。
実行結果
ではこのプログラムを実行してみましょう。以下のデータを動的配列に格納します。
サンプルデータ

プログラムの実行
動的配列にデータを格納することができました。
まとめ
この記事ではVBAで動的配列を使用する方法をご紹介しました。
・動的配列を定義するにはDimステートメントで配列の括弧の中身を空白にする。
・ReDimステートメントで配列のサイズを再定義する。
・Preserveオプションで配列の中身を保持する。
配列のサイズがあらかじめわからない場面では動的配列を活用すると便利です。
ではまた。
コメント