Initializeイベント:オブジェクトの初期化などインスタンスが生成されるときに必要な処理を記述する
Terminateイベント:インスタンスの破棄時に必要な処理を記述する
■サンプルコードの図解
■サンプルコード
クラスモジュール(Customerクラスを利用してCustomersクラスを作成)
Option Explicit '顧客情報セットのコレクション Private myItems As Collection '変数の初期化 Private Sub Class_Initialize() Set myItems = New Collection End Sub '変数の破棄 Private Sub Class_Terminate() Set myItems = Nothing End Sub '顧客情報を追加する Public Sub Add(ByVal vID As String, ByVal vName As String, ByVal vAge As Integer, ByVal vGender As String) '顧客情報のセットであるCustomerクラスのオブジェクトを生成する Dim vCustomer As Customer Set vCustomer = New Customer 'Customerオブジェクトに顧客情報を設定する With vCustomer .ID = vID .Name = vName .Age = vAge .Gender = vGender End With 'コレクションに顧客情報セットを追加する myItems.Add vCustomer 'Customerオブジェクトを初期化 Set vCustomer = Nothing End Sub '顧客情報を取得する Public Property Get Item(ByVal Index As Long) As Customer '顧客情報セットのコレクションmyItemよりアイテムのインデックス番号に紐づくデータを返す Set Item = myItems.Item(Index) End Property
呼び出し元プロシージャ
Option Explicit '表の列番号を定数化 Enum ColName ID = 1 Name = 2 Age = 3 Gender = 4 End Enum Sub テスト() '表データを格納する変数 Dim TableValue As Variant '表最終行格納用変数 Dim lngLastRow As Long '表データをバリアント型配列に格納 With Worksheets("Sheet2") .Select lngLastRow = .Cells(Rows.Count, 2).End(xlUp).Row TableValue = .Range(Cells(4, 2), Cells(lngLastRow, 5)) End With '顧客情報のセットのコレクションであるCustomersクラスのオブジェクトを生成する Dim objCustomers As Customers Set objCustomers = New Customers '表データより顧客情報を取得しCustomerオブジェクトに値を設定 Dim i As Long For i = LBound(TableValue) To UBound(TableValue) objCustomers.Add TableValue(i, ColName.ID), TableValue(i, ColName.Name), _ TableValue(i, ColName.Age), TableValue(i, ColName.Gender) Next '表から取得した顧客情報を抽出 '(年齢18歳未満・性別規定値以外はCustomerクラスで設定したエラー値である-1を出力) For i = LBound(TableValue) To UBound(TableValue) Debug.Print objCustomers.Item(i).ID Debug.Print objCustomers.Item(i).Name Debug.Print objCustomers.Item(i).Age Debug.Print objCustomers.Item(i).Gender Debug.Print vbCrLf Next Set objCustomers = Nothing End Sub
Sheet2の表を読み取ってイミディエイトウィンドウへ出力した結果