【ACCESS VBA】配列の要素数を動的に割り当てるには?

訪問して頂きありがとうございます。まさふくろーです。

この記事では、配列の要素数を動的に割り当てる方法をご紹介します。

動的配列の宣言の仕方

動的配列を宣言する構文

Dim 変数名() As データ型

説明
動的配列を宣言するには、通常の変数同様、Dimステートメントを使用します。(Private、Publicステートメントも使用できます。
変数名の後に「()」(カッコ)のみを記述します。

動的配列の要素数を設定するには

動的配列の要素数を設定する構文

ReDim 変数名(要素数)

説明
動的配列とは、あらかじめ要素数が決まっていない配列のことです。
動的配列の場合、プログラムの中で配列の要素を割り当てる必要があります。
このための命令が、ReDimステートメントです。

動的配列の値を保ったまま要素数を増やすための構文

ReDim Preserve 変数名(要素数)

説明
ReDimステートメントは、プログラム内で何度も使用できますが、単に「ReDim 変数名(要素数)」とした場合、それまで配列に保持されていた内容が破棄されてしまいます。
破棄されないようにするには、Preserveキーワードを使用します。

サンプルプログラムで使用するステートメント

For Nextステートメント

For counter = start To end [ Step step ]

  処理を記述
       [ Exit For ]
Next [ counter ]

説明
counterの値がendになるまで処理を繰り返します。
指定項目 必須 説明
counter 繰り返し回数を格納する変数。カウンタ変数と呼びます。
start 初期値を指定。
end 終了値を指定。
Step step

stepには、1回ループする際に加算する量を指定。
「Step 2」とした場合、カウンタ変数は「0、2、4、6・・・」と2ずつ加算されます。
省略した場合、カウンタ変数は「1」ずつ加算されます。
stepには、マイナスの値も指定できます。
Exit For ループの途中で処理を終了したい場合に使用します。
Next 次の処理に移動します。

サンプルプログラムで使用する関数

UBound関数

UBound (arrayname , [ dimension ])

説明
UBound関数は、配列の指定された次元で使用できる最大の要素数を取得します。
指定項目 必須 説明
arrayname 配列変数の名前を指定。
dimension

多次元配列の場合、どの次元の最大値を取得するかを指定。
3次元配列「Dim A(1 To 100, 0 To 3, -3 To 4)」の場合、dimension「1」を指定すると「100」を取得、dimension「2」を指定すると「3」を取得、dimension「3」を指定すると「4」を取得します。
省略した場合は、dimension「1」を指定したものと見なされます。

サンプルプログラム

1 Subプロシージャ「Sample」を作成。
3 動的配列変数「arry()」(文字列型)を宣言。
5 カウンタ変数「i」(整数型)を宣言。
7 動的配列の要素数を「2」に設定。
9 配列の1番目の要素に、文字列「りんご」を代入。
10 配列の2番目の要素に、文字列「みかん」を代入。
12 動的配列の内容を保持したまま要素数を「3」に変更。
14 配列の3番目の要素に、文字列「いちご」を代入。
16 配列の要素数だけ以下の処理を繰り返す。
17 配列に設定された内容をメッセージボックスに表示する。

実行結果

説明
配列の要素数を変更しても、配列変数に設定した値(りんご、みかん)がメッセージボックスに表示されます。
配列の要素数を変更した後に設定した値(いちご)がメッセージボックスに表示されます。

最後まで読んでいただき、ありがとうございました!