【Excel VBA】配列の使い方

VBA

今回はVBAの配列についてまとめてみました。

固定長配列

基本中の基本、固定長配列のサンプルです。

'固定長配列サンプル
Sub test()
    
    '配列の宣言(添字は0始まり)
    Dim arr1(5) As String '1次元配列 添字の上限を指定
    Dim arr2(2 To 5) As Integer '1次元配列 添字の範囲を指定
    Dim arr3(10, 10) As Integer '2次元配列 添字の上限を指定
    Dim arr4(1 To 10, 3 To 5) As Integer '2次元配列 添字の範囲を指定
    
    '配列の初期化(各データ型の初期値が設定される)
    Erase arr1
    Erase arr3
    
    '配列に値を設定
    arr1(0) = "あ"
    arr1(1) = "い"
    arr1(2) = "う"
    arr1(3) = "え"
    arr1(4) = "お"
    arr1(5) = "か"
      
    arr3(0, 1) = 1
    arr3(2, 0) = 2
    
    '配列の添字を取得
    Dim min, max As Integer
    min = LBound(arr1) '最小の添字
    max = UBound(arr1) '最大の添え字
    
    '配列の要素をループする
    Dim i As Integer
    For i = min To max
        Cells(i + 1, 1) = arr1(i)
    Next i
    
End Sub

可変長配列

次は動的に要素数を変えられる可変長配列のサンプルです。固定長配列とは少し扱い方が違います。

'可変長配列サンプル
Sub test()
    
    '配列の宣言(データ型はVariantでないとダメ)
    Dim arr1() As Variant '1次元配列用
    Dim arr2() As Variant '2次元配列用
            
    '配列の初期化(指定した初期値を設定する)
    arr1 = Array("あ", "い", "う", "え", "お")
    arr2 = Array(Array("A", "B"), Array("C", "D"))
    
    '配列の初期化(要素が空になる)
    Erase arr1
    Erase arr2
   
    '要素数を変更する(データは初期化される)
    ReDim arr1(6)
    ReDim arr2(5, 5)
    
    '値を設定
    arr1(0) = "あ"
    arr1(1) = "い"
    arr1(2) = "う"
    arr1(3) = "え"
    arr1(4) = "お"
    arr1(5) = "か"
      
    arr2(0, 1) = "a"
    arr2(2, 0) = "b"
    
    '要素数を変更する(データは保持したまま)
    ReDim Preserve arr1(10)
    ReDim Preserve arr2(5, 15) '2次元配列は第1引数の添字は変更できない
    
    '配列のインデックスを取得
    Dim min, max As Integer
    min = LBound(arr1) '最小インデックス
    max = UBound(arr1) '最大インデックス
    
    '配列の要素をループする
    Dim i As Integer
    Dim v As Variant
    i = 1
    For Each v In arr1
        Cells(i, 1) = v
        i = i + 1
    Next v

End Sub

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です