今回は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
実行すると以下のように個人情報が出力されます。
構造体を配列として定義する時のポイント
構造体を配列として定義する時のポイントは次の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点を注意するようにしましょう。
コメント