
VBAのReDim関数とは?基本構文や使い方を解説
VBAで一度作成した配列の要素数を処理の途中で変更や追加したいと思ったことはありませんか?ReDim関数では、要素数や次元数の変更など、配列の操作ができます。ここでは、多く使われる処理について説明していきます。
目次
1.Redim関数について
1-1.ReDim関数とは
ReDim関数は、動的配列の要素数、次元数を変更できる関数です。
1-2.ReDim関数の構文
ReDim Preserve [変更する変数名]([配列変数の次元数]) AS [変数のデータ型]
引数 | 省略 | 説明 |
Preserve | 可能 | 最後の要素数を変更するとき、既存の配列のデータを保持する際に使用されるキーワードです。 |
[変更する変数名] | 不可 | 変更したい変数名。 |
[配列変数の次元数] | 不可 | 配列変数の次元です。最大 60 までの多次元を宣言できます。 |
[変数のデータ型] | 必須 | 変数のデータ型。 Byte、Boolean、Integer、Long、Currency、Single、Double、日付、文字列 (可変長文字列の場合)、文字列の長さ (固定長文字列の場合)、Object、Variant、ユーザー定義型、オブジェクト型を指定できます。定義されている変数ごとに個別の As 型 句を使用します。配列を含む Variant の場合、他の型に変更しません。 |
2.ReDim関数の使用例
2-1.基本的な使用例
2-1-1.要素数を変更
下記の例では、要素数を定義していない配列Arryを、要素数を5に変更しています。
Sub sample01() Dim Arry() As String ReDim Arry(5) End Sub
変更前:
変更後:
2-1-2.次元数を変更
下記の例では、1次元配列Arryを2次元配列に変更しています。
Sub sample02() Dim Arry As Variant '配列を作成 ReDim Arry(2) '次元を変更 ReDim Arry(2, 3) End Sub
変更前:
変更後:
2-2.特殊な書き方をする場合
2-2-1.配列の中身を保持したまま要素数を変更する
Preserveを使うと、配列の値を保持した状態で要素数を変更できます。
Sub sample03() Dim Arry As Variant '配列を作成 ReDim Arry(2) Arry(0) = 0 Arry(1) = 1 Arry(2) = 2 '要素数を変更 ReDim Preserve Arry(3) End Sub
変更前:
変更後:
3.ReDim関数の特殊な使い方
3-1.データ型の変更
変更元がVariant型の変数のみ可能
Sub sample04() Dim Arry As Variant 'データ型をVariantからStringへ変更 ReDim Arry(2) As String End Sub
変更前:
変更後:
3-2.配列の初期化
要素数を変更することで、配列を初期化することができます。
Sub sample05() Dim Arry As Variant '配列を作成 ReDim Arry(2) Arry(0) = 0 Arry(1) = 1 Arry(2) = 2 '要素数を変更 ReDim Arry(3) End Sub
変更前:
変更後:値が初期化されて「Empty 値」になります。
3-3.Preserveを使用する際の注意
3-3-1.変更できる要素数は、下限(一番右側の値)のみ有効
それ以外を変更しようとすると、エラーになります。
Sub sample05() Dim Arry As Variant '配列を作成 ReDim Arry(2, 3) '要素数を変更 ' ReDim Preserve Arry(3, 5) ‘←1つ目の値を変更しているのでエラーが発生 ReDim Preserve Arry(2, 5) End Sub
4.最後に
ReDim関数は、配列の要素数や次元を変更するだけではなく、初期化等も行える関数です。うまく利用して、配列を活用していきましょう。
コメント