ReDim ステートメント
動的配列変数を宣言し、そのメモリ領域の割り当てや再割り当てを行います。
ReDim [Preserve] varname(subscripts) [, varname(subscripts)] . . .
引数
Preserve
次元の大きさを変更しても、その配列に既に格納されている値をそのまま保持しておく必要がある場合に指定します。varname
宣言する変数の名前を指定します。変数の標準的な名前付け規則に従って名前を付けます。subscripts
配列変数の次元を指定します。最大 60 次元まで宣言することができます。subscripts の構文は次のとおりです。upper [,upper] . . . . .
配列のインデックス番号の最小値は、常に 0 になります。
解説
ReDim ステートメントは、Private、Public、または Dim の各ステートメントで、インデックス番号を省略してかっこだけを指定し、明示的に宣言された動的配列の大きさの指定や変更に使用します。ReDim ステートメントは、配列の要素数や次元数を変更するために何回でも使用できます。
キーワード Preserve を指定した場合、配列の最後の次元のサイズだけを変更できます。たとえば、次元が 1 つしかない配列の場合、その次元はただ 1 つの次元なので、その次元のサイズを変更できます。しかし、次元が 2 つ以上ある配列の場合、最後の次元のサイズだけを変更して、その配列の内容をそのまま残すことは可能ですが、他の次元の大きさを変更することはできません。
次のコードは、既に格納されている値を削除せずに動的配列の最後の次元のサイズを増やす例です。
ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)
注意 配列のサイズを変更して小さくすると、削除された要素に格納されていたデータは失われます。
変数の初期化時には、数値変数は 0 に、文字列変数は長さ 0 の文字列 ("") に初期化されます。オブジェクトを参照する変数には、あらかじめ Set ステートメントで既存のオブジェクトを代入しておく必要があります。オブジェクト変数は、既存のオブジェクトが代入されるまで、特殊な値 Nothing が格納されています。