【Excel VBA】構造体を配列として定義する方法を紹介【Type】

Excel
スポンサーリンク

今回はType変数を配列として定義する方法を紹介したいと思います。

以前構造体の中に構造体を入れる方法について紹介していますので、こちらも併せてご覧ください!

スポンサーリンク

構造体を配列として定義する方法

結論、構造体を配列として定義するには、変数名の後ろに()(カッコ)を付けることで実現できます。

例として以下に2名の個人情報を出力するコードを用意しました。シートに以下コードを貼り付けて実行してみてください。

Private Type test_type_infomations
    FullName                    As String
    Gender                      As String
    Age                         As Long
    Prefecture                  As String
End Type

Sub test_Type_Array()
    
    Dim type_array()            As test_type_infomations
    Dim i                       As Long
        
    ReDim type_array(2)
    
    With type_array(0)
        .FullName = "はりぼな たろう"
        .Gender = "男"
        .Age = 20
        .Prefecture = "東京都"
    End With

    With type_array(1)
        .FullName = "はりぼな はなこ"
        .Gender = "女"
        .Age = 21
        .Prefecture = "大阪府"
    End With

    For i = 0 To UBound(type_array) - 1
        With type_array(i)
            Range("A2").Offset(i, 0) = i + 1
            Range("B2").Offset(i, 0) = .FullName
            Range("C2").Offset(i, 0) = .Gender
            Range("D2").Offset(i, 0) = .Age
            Range("E2").Offset(i, 0) = .Prefecture
        End With
    Next i

End Sub

実行すると以下のように個人情報が出力されます。

構造体を配列として定義する方法_1
スポンサーリンク

構造体を配列として定義する時のポイント

構造体を配列として定義する時のポイントは次の2点になります。

  • 変数宣言時に()(カッコ)を付ける
  • RedimもしくはRedim Preserveで配列の数を定義する

最初の説明と重複する部分もありますが、それぞれ説明します。

変数宣言時に()(カッコ)を付ける

最初に説明したとおり、構造体を格納する変数の後ろに()(カッコ)を付ける必要があります。

Dim type_array()            As test_type_infomations

また、As …の後ろ(変数の型)はいつも通り構造体名で指定すればOKです(今回の例だと「test_type_informations」)。

Private Type test_type_infomations
    FullName                    As String
    Gender                      As String
    Age                         As Long
    Prefecture                  As String
End Type

RedimもしくはRedim Preserveで配列の数を定義する

変数定義後は、通常の配列を使用する時と同じように配列の数を定義する必要があります。

ReDim type_array(2)

配列の数を定義した後は構造体の各変数にそれぞれデータを格納してあげればOKです

With type_array(0)
    .FullName = "はりぼな たろう"
    .Gender = "男"
    .Age = 20
    .Prefecture = "東京都"
End With

With type_array(1)
    .FullName = "はりぼな はなこ"
    .Gender = "女"
    .Age = 21
    .Prefecture = "大阪府"
End With

また、配列の数を定義した&格納済みデータを消さずに要素数を追加したい場合は「Redim Preserve」を使用し、再度データを格納すればOKです。

ReDim Preserve type_array(UBound(type_array) + 2)

With type_array(2)
    .FullName = "はりぼな じろう"
    .Gender = "男"
    .Age = 18
    .Prefecture = "京都府"
End With

With type_array(3)
    .FullName = "はりぼな かなこ"
    .Gender = "女"
    .Age = 22
    .Prefecture = "沖縄県"
End With
スポンサーリンク

まとめ

今回はType変数を配列として定義する方法を紹介しました。

Type変数を配列として使用する際は、

  • 変数宣言時に()(カッコ)を付ける
  • RedimもしくはRedim Preserveで配列の数を定義する

上記2点を注意するようにしましょう。

コメント

タイトルとURLをコピーしました