配列VBAで配列を利用することがあります。その配列に入れる値の数は固定の場合もあれば可変の場合もあります。配列の要素数が最初に決まるものを「静的配列」や「固定配列」と言い、配列の要素数が変動するものを「動的配列」と言います。ここでは可変の場合である動的配列の初期化から利用方法について取り上げます。静的配列と動的配列の違い静的配列の場合は以下のように変数宣言時に要素数を指定して書きます。ary(10)しかし動的配列の場合は変数宣言時はサイズの指定を行いません。要素数を変更するRedimステートメントを使って上限値を設定します。動的配列は初期化、値の設定、値の利用、解放、の流れで使用します。その流れをまとめたコードが以下になります。各部分について詳細を後述します。Redimで宣言も可能。Redimで宣言も可能。Subソースコードの説明ソースコードが少し長いので、部分を切り出しながら説明します。Redimで宣言も可能。Redimで宣言も可能。ary(0)ですが、3行目と8行目を1行で書いた内容になります。動的配列の宣言は2行目のように1行で書いてもいいですし、3行目と8行目のように分けて書いてもいいです。8行目は動的配列としてのサイズを指定して配列を初期化します。仮に(3)などで書くと配列は以下のように4つの領域を持ちます。4サイズ指定した値と実際の領域の数が異なるため注意が必要です。Preserveにて動的配列の要素を増やしています。Preserveは元の要素数より大きい数を指定すれば配列が拡張されますが、それとは逆に、すでに確保済みの領域数より小さい数を設定した場合は、その小さい値以降の領域は削除されます。ary(2)と書くとary(3)を含めて以降の領域は削除され、ary(0)、ary(1)、ary(2)の3つの領域が残ります。ary(0)21行目で使っているUbound関数は配列の要素数を取得します。29行目のEraseステートメントは配列の内容を解放します。解放後は動的配列であったことすらも解放されます。固定配列の場合は各サイズの内容のクリアされ初期化されます。ここでは例として書いているだけで、関数終了後に動的配列は解放されるため通常はEraseを書く必要はありません。32行目で再度動的配列として初期化しています。Eraseと同様ですが、実際にコーディングする際にはこの初期化を書く必要はありません。Excel作業をVBAで効率化シェアお問合わせTOPへ。