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

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

目次

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

配列とは

配列を作成する

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

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

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

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

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

Sub test1()

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

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

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

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

Sub test1()

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

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

配列の値を変更する

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

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

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

End Sub

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

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

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

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

    For Each a In ar1
            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 ar1(2, 2) As Integer
    
    ar1(0, 0) = 1
    ar1(0, 1) = 2
    ar1(0, 2) = 3
    ar1(1, 0) = 4
    ar1(1, 1) = 5
    ar1(1, 2) = 6
    
    Debug.Print ar1(0, 0) '1
    Debug.Print ar1(0, 1) '2
    Debug.Print ar1(0, 2) '3
    Debug.Print ar1(1, 0) '4
    Debug.Print ar1(1, 1) '5
    Debug.Print ar1(1, 2) '6
    
End Sub

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

関連の記事

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

△上に戻る