【VBA】配列の書き方

Excel,VBA

VBAでの配列の書き方です。

記載内容 ①固定長配列
②可変長配列の再定義
③多次元配列

①固定長配列

固定長の配列に値を格納し、結合した値を表示します。

Sub Array1()

    Dim arr(2)

    arr(0) = "No1,"
    arr(1) = "No2,"
    arr(2) = "No3"

    MsgBox Join(arr)

End Sub

【実行結果】配列が結合して表示されます。

No1,No2,No3

②可変長配列の再定義

ReDim

Redimステートメントは、実行のたびに配列内の値がクリアされます。
可変長の配列に値を格納し、結合した値を表示してみます。

Sub Array2()

    Dim arr()

    ReDim arr(0)
    arr(0) = "No1,"

    ReDim arr(1)
    arr(1) = "No2,"

    ReDim arr(2)
    arr(2) = "No3"

    MsgBox Join(arr)

End Sub

【実行結果】"No1,"と"No2,"が再定義により削除されています。

No3

ReDim Preserve

上記と同様、可変長の配列に値を格納し、結合した値を表示してみます。

Sub Array3()

    Dim arr()

    ReDim Preserve arr(0)
    arr(0) = "No1,"

    ReDim Preserve arr(1)
    arr(1) = "No2,"

    ReDim Preserve arr(2)
    arr(2) = "No3"

    MsgBox Join(arr)

End Sub

【実行結果】再定義をしても"No1,"と"No2,"がクリアされず表示されます。

No1,No2,No3

③多次元配列

次の表のような並びの値を、配列を使って格納します。

No名前点数
1佐藤80
2鈴木90
3田中100
Sub array4()
    
    Dim arr(2, 2)
    
    arr(0, 0) = "1"
    arr(1, 0) = "2"
    arr(2, 0) = "3"
    arr(0, 1) = "佐藤"
    arr(1, 1) = "鈴木"
    arr(2, 1) = "田中"
    arr(0, 2) = "80"
    arr(1, 2) = "90"
    arr(2, 2) = "100"

    ' 名前のみ表示
    MsgBox arr(0, 1)
    MsgBox arr(1, 1)
    MsgBox arr(2, 1)

End Sub

【実行結果】以下の値がメッセージボックスで表示されます。

佐藤
鈴木
田中

参考書

Excel,VBA

Posted by junichi