ReDim ステートメント (Visual Basic)ReDim Statement (Visual Basic)

配列変数の記憶域を再割り当てします。Reallocates storage space for an array variable.

構文Syntax

ReDim [ Preserve ] name(boundlist) [ ,  name(boundlist) [, ... ] ]  

指定項目Parts

用語Term 定義Definition
Preserve 任意。Optional. 最後の次元のサイズだけを変更したときに、既存の配列のデータを保持するために使用する修飾子Modifier used to preserve the data in the existing array when you change the size of only the last dimension.
name 必須。Required. 配列変数名。Name of the array variable. Declared Element Names」を参照してください。See Declared Element Names.
boundlist 必須。Required. 再定義された配列の各次元の境界を一覧表示します。List of bounds of each dimension of the redefined array.

RemarksRemarks

`ReDim\` ステートメントを使用し、既に宣言されている配列の 1 つまたは複数の次元のサイズを変更できます。You can use the `ReDim` statement to change the size of one or more dimensions of an array that has already been declared. 大きな配列があり、その要素の一部が必要ない場合、`ReDim` で配列のサイズを減らし、メモリを解放できます。If you have a large array and you no longer need some of its elements, `ReDim` can free up memory by reducing the array size. 一方で、配列に要素を追加する必要がある場合、`ReDim` は要素を追加できます。On the other hand, if your array needs more elements, `ReDim` can add them. `ReDim\` ステートメントは配列のみを対象としています。The `ReDim` statement is intended only for arrays. スカラー (単一の値のみが含まれる変数)、コレクション、構造体では有効ではありません。It's not valid on scalars (variables that contain only a single value), collections, or structures. `Array\` 型の変数を宣言する場合、`ReDim\` ステートメントには新しい配列を作成するために十分な型情報が与えられません。Note that if you declare a variable to be of type `Array`, the `ReDim` statement doesn't have sufficient type information to create the new array. `ReDim` はプロシージャ レベルでのみ使用できます。You can use `ReDim` only at procedure level. そのため、変数の宣言コンテキストはプロシージャにする必要があります。ソース ファイル、名前空間、インターフェイス、クラス、構造体、モジュール、ブロックにすることはできません。Therefore, the declaration context for the variable must be a procedure; it can't be a source file, a namespace, an interface, a class, a structure, a module, or a block. 詳細については、「[宣言コンテキストと既定のアクセス レベル](../../../visual-basic/language-reference/statements/declaration-contexts-and-default-access-levels.md)」を参照してください。For more information, see [Declaration Contexts and Default Access Levels](../../../visual-basic/language-reference/statements/declaration-contexts-and-default-access-levels.md). ## ルールRules - **複数の変数。****Multiple Variables.** 同じ宣言ステートメントで複数の配列変数のサイズを変更し、各変数の `name` 部分と `boundlist` 部分を指定できます。You can resize several array variables in the same declaration statement and specify the `name` and `boundlist` parts for each variable. 複数の変数を指定するときは、コンマで区切ります。Multiple variables are separated by commas. - **配列の境界。****Array Bounds.** `boundlist` の各エントリでその次元の上限と下限を指定できます。Each entry in `boundlist` can specify the lower and upper bounds of that dimension. 下限は常に 0 (ゼロ) です。The lower bound is always 0 (zero). 上限は次元の長さ (上限に 1 を足したもの) ではなく、その次元で可能な最大インデックス値です。The upper bound is the highest possible index value for that dimension, not the length of the dimension (which is the upper bound plus one). 各次元のインデックスは 0 ~ 上限値の範囲で変わります。The index for each dimension can vary from 0 through its upper bound value. `boundlist\` の次元数は配列の次元の元の数 (r順位) に一致する必要があります。The number of dimensions in `boundlist` must match the original number of dimensions (rank) of the array. - **データ型。****Data Types.** `ReDim` ステートメントでは、配列変数またはその要素のデータ型を変更できません。The `ReDim` statement cannot change the data type of an array variable or its elements. - **初期化します。****Initialization.** `ReDim` ステートメントは配列要素の新しい初期化値を提供できません。The `ReDim` statement cannot provide new initialization values for the array elements. - **ランク付けします。****Rank.** `ReDim` ステートメントは配列の順位 (次元数) を変更できません。The `ReDim` statement cannot change the rank (the number of dimensions) of the array. - **サイズ変更と保持します。****Resizing with Preserve.** `Preserve` を使用する場合、配列の最後の次元だけのサイズを変更できます。If you use `Preserve`, you can resize only the last dimension of the array. 他のすべての次元については、既存の配列の境界を指定する必要があります。For every other dimension, you must specify the bound of the existing array. たとえば、配列に次元が 1 つだけある場合、その次元のサイズを変更し、配列のすべてのコンテンツを保持できます。最後で唯一の次元を変更するためです。For example, if your array has only one dimension, you can resize that dimension and still preserve all the contents of the array, because you are changing the last and only dimension. ただし、配列に次元が 2 つ以上あるときは、`Preserve` を使用する場合、最後の次元だけのサイズを変更できます。However, if your array has two or more dimensions, you can change the size of only the last dimension if you use `Preserve`. - **プロパティ。****Properties.** 値の配列を保持するプロパティで `ReDim` を使用できます。You can use `ReDim` on a property that holds an array of values. ## 動作Behavior - **配列置換。****Array Replacement.** `ReDim` 既存の配列を解放し、同じランクを持つ新しい配列を作成します。`ReDim` releases the existing array and creates a new array with the same rank. 新しい配列は配列変数で解放された配列に取って代わります。The new array replaces the released array in the array variable. - **保持しない初期化。****Initialization without Preserve.** `Preserve` を指定しない場合、`ReDim` はそのデータ型の既定値を使用し、新しい配列の要素を初期化します。If you do not specify `Preserve`, `ReDim` initializes the elements of the new array by using the default value for their data type. - **保持する初期化。****Initialization with Preserve.** `Preserve` を指定する場合、Visual Basic は既存の配列から新しい配列に要素をコピーします。If you specify `Preserve`, Visual Basic copies the elements from the existing array to the new array. ## Example 次の例では、配列の既存データを失うことなく動的配列の最後の次元のサイズを増やし、その後、一部のデータを損失しサイズを減らします。The following example increases the size of the last dimension of a dynamic array without losing any existing data in the array, and then decreases the size with partial data loss. 最後に、サイズを減らして元の値に戻し、すべての配列要素を再初期化します。Finally, it decreases the size back to its original value and reinitializes all the array elements. [!code-vb[VbVbalrStatements#52](~/samples/snippets/visualbasic/VS_Snippets_VBCSharp/VbVbalrStatements/VB/Class1.vb#52)] `Dim\` ステートメントは次の 3 つの次元を持つ新しい配列を作成します。The `Dim` statement creates a new array with three dimensions. 各次元は 10 の境界で宣言されます。そのため、各次元の配列インデックスの範囲は 0 ~ 10 になります。Each dimension is declared with a bound of 10, so the array index for each dimension can range from 0 through 10. 次の説明では、3 つの次元が「層」、「行」、「列」になります。In the following discussion, the three dimensions are referred to as layer, row, and column. 最初の `ReDim` は、変数 `intArray` の既存の配列を置換する新しい配列を作成します。The first `ReDim` creates a new array which replaces the existing array in variable `intArray`. `ReDim` は既存の配列から新しい配列にすべての要素をコピーします。`ReDim` copies all the elements from the existing array into the new array. また、さらに 10 個の列を各層の各行の終わりに追加し、これらの列の要素を 0 (配列の要素型である `Integer` の初期値) に初期化します。It also adds 10 more columns to the end of every row in every layer and initializes the elements in these new columns to 0 (the default value of `Integer`, which is the element type of the array). 2 番目の `ReDim` は新しい配列をもう 1 つ作成し、適合するすべての要素をコピーします。The second `ReDim` creates another new array and copies all the elements that fit. ただし、5 つの列がすべての層のすべての行の終わりから失われます。However, five columns are lost from the end of every row in every layer. これらの列を使用して完了した場合、これは問題ではありません。This is not a problem if you have finished using these columns. 大きな配列のサイズを減らし、不要になったメモリを解放できます。Reducing the size of a large array can free up memory that you no longer need. 3 番目の `ReDim` は新しい配列をもう 1 つ作成し、すべての層のすべての行の終わりから別の 5 つの列を削除します。The third `ReDim` creates another new array and removes another five columns from the end of every row in every layer. このとき、既存の要素はコピーされません。This time it does not copy any existing elements. このステートメントは配列を元のサイズに戻します。This statement reverts the array to its original size. ステートメントに `Preserve` 修飾子が含まれないため、すべての配列要素が元の初期値に設定されます。Because the statement doesn't include the `Preserve` modifier, it sets all array elements to their original default values. その他の例では、次を参照してください。[配列](../../../visual-basic/programming-guide/language-features/arrays/index.md)します。For additional examples, see [Arrays](../../../visual-basic/programming-guide/language-features/arrays/index.md). ## 関連項目See also - - [Const ステートメントConst Statement](../../../visual-basic/language-reference/statements/const-statement.md) - [Dim ステートメントDim Statement](../../../visual-basic/language-reference/statements/dim-statement.md) - [Erase ステートメントErase Statement](../../../visual-basic/language-reference/statements/erase-statement.md) - [NothingNothing](../../../visual-basic/language-reference/nothing.md) - [配列Arrays](../../../visual-basic/programming-guide/language-features/arrays/index.md)