Excel VBAの配列の仕組みと使い方のサンプル

ExcelのVBAの配列の仕組みと使い方のサンプルです。

目次

仕組み 配列とは
作成する 配列を作成する
  配列を作成する(Array関数)
取得する 配列の値をfor文で取得する
変更する 配列の値を変更する
  配列のサイズを変更する(ReDimとPreserve)
2次元 2次元配列を作成する

配列とは

a = Array( 値1 , 値2 , 値3 )

上記は複数の値を変数aに代入しています。
この変数aは配列として複数の値を持ちます。

配列を作成する

配列を作成するサンプルです。

Sub test1()
    
    Dim a(2) As Integer
    a(0) = 1
    a(1) = 2
    a(2) = 3
    'a(3) = 4 インデックスが有効範囲にありません
    
    Debug.Print a(0) '1
    Debug.Print a(1) '2
    Debug.Print a(2) '3
    
End Sub

3行目は、変数の後のかっこで2を指定しています。
その場合の要素は、4~6行目のようにインデックスは0から2までの3つ入ります
要素の数が2つではないので注意が必要です。
Javaの場合は、3と宣言したら要素の数は3つです。

配列を作成する(Array関数)

Array 関数を使用して配列を作成するサンプルです。

Sub test1()

    Dim a As Variant
    
    a = Array(1, 2, 3)
    
    Debug.Print a(0) '1
    Debug.Print a(1) '2
    Debug.Print a(2) '3
    
End Sub

3行目は、Variantで変数を宣言しています。
5行目は、Array関数で配列に値をまとめてセットしています。
7~9行目は、配列の値を表示しています。

配列の値をfor文で取得する

配列の値をfor文で取得するサンプルです。

Sub test1()

    Dim a As Variant
    a = Array(1, 2, 3)
    
    For Each b In a
           Debug.Print b '1 2 3
    Next
    
    For i = 0 To UBound(a)
           Debug.Print a(i) '1 2 3
    Next
    Debug.Print UBound(a) '2
    Debug.Print Lbound(a) '0
End Sub

6行目は、For Each文で配列の値の数分処理を繰り返します。
10行目は、For文で配列の値の数分処理を繰り返します。
UBoundは引数の配列の最大のインデックス値を返します。2が返ります。
Lboundは引数の配列の最小のインデックス値を返します。0が返ります。

配列の値を変更する

配列の値を変更するサンプルです。

Sub test1()
    
    Dim a As Variant
    a = Array("赤", "黄", "青")
    
    a(1) = "オレンジ"

    Debug.Print a(0) '赤が出力される
    Debug.Print a(1) 'オレンジが出力される
    Debug.Print a(2) '青が出力される

End Sub

6行目は、文字列を配列の変数に代入しています。
インデックス(添字)で変更したい要素を指定します

配列のサイズを変更する(ReDimとPreserve)

配列のサイズを変更するサンプルです。

Sub test1()
    
    Dim a() As String
    
    ReDim a(2)
        
    a(0) = "赤"
    a(1) = "黄"
    a(2) = "青"
    
    ReDim Preserve a(3)
    a(3) = "オレンジ"

    For Each a In a
            Debug.Print a '赤 黄 青 オレンジ
    Next
End Sub

3行目は、配列の変数を宣言しています。要素数は指定しません。
5行目は、Redimで数値を2にしています。
7~9行目は、値をセットしています。
11行目は、Redim Preserveで数値を3に変更しています。
Preserveは保持するという意味です。Preserveがないと7~9行目の値がクリアされてしまいます。
要素数が変わるので動的配列と呼ばれます。

2次元配列を作成する

2次元配列を作成するサンプルです。

Sub test1()

    Dim a(2, 2) As Integer
    
    a(0, 0) = 1
    a(0, 1) = 2
    a(0, 2) = 3
    a(1, 0) = 4
    a(1, 1) = 5
    a(1, 2) = 6
    
    Debug.Print a(0, 0) '1
    Debug.Print a(0, 1) '2
    Debug.Print a(0, 2) '3
    Debug.Print a(1, 0) '4
    Debug.Print a(1, 1) '5
    Debug.Print a(1, 2) '6
    
End Sub

3行目は、a(2,2)としています。これは配列の要素の数を3つずつ宣言しています。
指定の数プラス1が実際の要素の数です。
5~10行目は、2次元配列に値をセットしています。
12~17行目は、2次元配列の値を表示しています。

関連の記事

Excel VBAのFor文のサンプル
Excel VBAのDo Loop文のサンプル
Excel VBAのFor Each文のサンプル

△上に戻る