ReDim文

動的配列変数を宣言し、プロシージャ・レベルでストレージ・スペースを割当てまたは再割当てします。

構文

ReDim [Preserve] varname(subscripts) [, varname(subscripts)] . . .

引数:

  • Preserve: 最後の次元のサイズを変更すると、既存の配列のデータを保持します。

  • Varname: 変数の名前。標準の変数命名規則に従います。

  • Subscripts: 配列変数の次元。

備考

ReDim文は、空のカッコを使用したPrivate文、Public文またはDim文(次元サブスクリプトなし)を使用してすでに正式に宣言されている動的配列をサイズ設定またはサイズ変更するのに使用されます。ReDim文を繰り返し使用して、配列内の要素および次元の数を変更できます。

Preserveキーワードを使用すると、最後の配列次元のみのサイズを変更でき、次元の数は変更できません。たとえば、配列が一次元のみの場合、その次元は最後の唯一の次元であるため、サイズを変更できます。ただし、配列に複数の次元がある場合は、最後の次元のみのサイズを変更でき、配列の内容は保持できます。

次の例は、配列に含まれる既存のデータを消去せずに、動的配列の最後の次元のサイズを増やす方法を示しています。

例1: 基本的なReDimの使用方法(Preserveなし)

Dim arr()
' Initially, create an array with 3 elements
ReDim arr(2)  ' Array can hold 3 elements (0, 1, 2)
' Assign values to the array
arr(0) = "Apple"
arr(1) = "Banana"
arr(2) = "Cherry"
' Now, resize the array to hold 5 elements
ReDim arr(4)  ' Array can hold 5 elements (0, 1, 2, 3, 4)
'If you try to access indexes 0, 1, 2 there will be no values.
' The previous values are lost because we did not use Preserve
arr(3) = "Date"
arr(4) = "Elderberry"

例2: 既存のデータを保持するためのReDim Preserveの使用

Dim arr()
' Initially, create an array with 3 elements
ReDim arr(2)  ' Array can hold 3 elements (0, 1, 2)
' Assign values to the array
arr(0) = "Apple"
arr(1) = "Banana"
arr(2) = "Cherry"
' Now, resize the array to hold 5 elements, keeping the existing data
ReDim Preserve arr(4)  ' Array can hold 5 elements (0, 1, 2, 3, 4)
' The previous values are preserved, so we can add more elements
arr(3) = "Date"
arr(4) = "Elderberry"

注意: 配列を元の配列より小さくすると、削除された要素内のデータは失われます。

変数が初期化されると、数値変数は0に初期化され、文字列変数は長さゼロの文字列("")に初期化されます。オブジェクトを参照する変数は、使用する前に、Set文を使用して既存のオブジェクトを割り当てる必要があります。オブジェクトが割り当てられるまで、宣言されたオブジェクト変数には特別な値「Nothing」が含まれます。