はじめに
前回のおさらいと今回やること
前回は配列に関して学習しました。今回はユーザー定義型に関してです。
ユーザー定義型とは?
ユーザー定義型の概要
前回学習した配列は、一つの変数に複数の値が格納できるというメリットがありました。しかしながら、複数の値は同じデータ型でなければならないという制約があります。複数の異なるデータ型の値を、一つの変数で取り扱いたい場合に使用するのがユーザー定義型です。
下図の表を参考にしながら解説していきます。
このようなテーブルの場合、「ID」「氏名」「住所」「電話番号」がひとまとめになった配列が有効に使えます。しかし、IDには整数値、氏名・住所・電話番号には文字列がそれぞれ格納されることになるので、通常の配列ではこれが実現できません(IDに入る値は文字としての「1」です!ということなら可能ですが…)。そこで、異なるデータ型のセットが作れるユーザー定義型の登場です。
ユーザー定義型の使い方
では実際にユーザー定義型を使ってみたいと思います。手順としては、
①ユーザー定義型を宣言する
②変数宣言の際に「As ユーザー定義型名」と記述する
たったこれだけです。
①ユーザー定義型を宣言する
ユーザー定義型の宣言は、宣言セクション(全てのプロシージャを記述する前、ファイルの先頭)にて、
Type ユーザー定義型名称
変数名 As データ型
変数名 As データ型
変数名 As データ型
…
End Type
のように行います。それぞれの変数でデータ型は同じでも異なっていても構いません。今回のテーブルを例にすると、
Type Profile id As Integer name As String address As String phonenum As String End Type
となります。
②変数宣言の際に「As ユーザー定義型名」と記述する
ユーザー定義型配列に、テーブルの値を格納するプロシージャを作成します。
Sub sample8_1() Dim wholetable(2) As Profile Dim i As Long, j As Long For i = 2 To 4 wholetable(i - 2).id = Cells(i, 1) wholetable(i - 2).name = Cells(i, 2) wholetable(i - 2).address = Cells(i, 3) wholetable(i - 2).phonenum = Cells(i, 4) Next End Sub
この中の、「Dim wholetable(2) As Profile」の部分が、「固定長配列wholetableにユーザー定義型Profileを使用します」ということを表しています。
ユーザー定義型を使用すると、
配列変数名(配列のインデックス番号).ユーザー定義の変数名
という形で、各値を操作することが可能となります。図のイメージは下の通りです。
配列の要素の中に小分けの部屋が出来ており、ひとつひとつに名前が付いています。
デバッグ方法は前回のExcelVBAを1から学ぶ! #7 ~配列とは?~にありますので、同じようにして配列内に要素が格納されているか確認しましょう。
まとめ
今回はユーザー定義型に関してでした。メリットとして、異なるデータ型をセットで扱えるほか、要素名を自分の分かり易い形で定義できることが挙げられます。有効に使ってみてください。
次回はステートメントについてです。