つらつら Excel VBA

私の備忘録です。

配列の初期値入れ込み

配列リテラルの場合は番号が1からになる模様。ふしぎ!
2次元配列と配列の入れ子(ジャグ配列)は書き方が違うので注意。

Option Base 0
Sub 配列テスト()
    
    Dim myArray, ar, a
    Dim i As Integer, j As Integer
    
    '1次元配列
    ReDim myArray(3)
    myArray(0) = "おうた"
    myArray(1) = "うんどう"
    myArray(2) = "ひるね"
    myArray(3) = "おやつ"
    
    For i = LBound(myArray) To UBound(myArray)
        Debug.Print myArray(i), "(" & i & ")"
    Next
    
    myArray = Array("おうた", "うんどう", "ひるね", "おやつ")
    For Each ar In myArray
        Debug.Print ar
    Next
    
    '2次元配列
    myArray = [{"経済学","社会学","国際文化"; "心理学","哲学","文学"}] '配列リテラル
    
    For i = LBound(myArray, 1) To UBound(myArray, 1)
        For j = LBound(myArray, 2) To UBound(myArray, 2)
            Debug.Print myArray(i, j), "(" & i & "," & j & ")"
        Next
    Next
    
    myArray = Range("A1:B10")
    For Each ar In myArray
        Debug.Print ar
    Next
    
    '配列の入れ子
    myArray = Array(Array("国語", "算数"), Array("理科", "社会", "英語"), Array("体育", "音楽"))
    
    For i = LBound(myArray, 1) To UBound(myArray, 1)
        For j = LBound(myArray(i)) To UBound(myArray(i))
            Debug.Print myArray(i)(j), "(" & i & ")(" & j & ")"
        Next
    Next
    
    For Each ar In myArray
        For Each a In ar
            Debug.Print a
        Next
    Next
    
    Erase myArray '初期化
    
End Sub

値を確認するだけならFor Each。短い!
場所の確認が必要なら配列に従って順序よく丁寧に調べる。

以上。