■クラスモジュール(Customerクラス)
Option Explicit 'モジュールレベル変数を宣言 Private cID As String 'ID Private cName As String '氏名 Private cAge As Long '年齢 Private cGender As Variant '性別 'IDを設定 Public Property Let ID(ByVal vID As String) cID = vID End Property 'IDを出力 Public Property Get ID() As String ID = cID End Property '氏名を設定 Public Property Let Name(ByVal vName As String) cName = vName End Property '氏名を出力 Public Property Get Name() As String Name = cName End Property '年齢を設定 Public Property Let Age(ByVal vAge As Long) '18歳未満は受付不可の為、エラー判定値として-1を格納 If vAge < 18 Then cAge = -1 Else cAge = vAge End If End Property '年齢を出力 Public Property Get Age() As Long Age = cAge End Property '性別を取得 Public Property Let Gender(ByVal vGender As Variant) '「男」または「女」以外の値が入力された場合はエラー値として-1を格納 If vGender = "男" Or vGender = "女" Then cGender = vGender Else cGender = -1 End If End Property '性別を出力 Public Property Get Gender() As Variant Gender = cGender End Property
■呼び出し元プロシージャ(標準モジュール)
Option Explicit Sub test() 'Customerクラスのオブジェクトを代入するの変数を宣言 Dim objCustomer As Customer 'Customerクラスのオブジェクトを生成 Set objCustomer = New Customer 'IDを設定 objCustomer.ID = "A0001" '氏名を設定 objCustomer.Name = "鈴木 太郎" '年齢を設定 objCustomer.Age = 20 '性別を設定 objCustomer.Gender = "男" '顧客情報を出力 Debug.Print objCustomer.ID Debug.Print objCustomer.Name If objCustomer.Age = -1 Then Debug.Print "18歳未満です" Else Debug.Print objCustomer.Age End If If objCustomer.Gender = -1 Then Debug.Print "規定値以外が入力されました" Else Debug.Print objCustomer.Gender End If Debug.Print vbCrLf 'IDを設定 objCustomer.ID = "A0002" '氏名を設定 objCustomer.Name = "佐藤 太郎" '年齢を設定 objCustomer.Age = 15 '性別を設定 objCustomer.Gender = "どちらでもない" '顧客情報を出力 Debug.Print objCustomer.ID Debug.Print objCustomer.Name If objCustomer.Age = -1 Then Debug.Print "18歳未満です" Else Debug.Print objCustomer.Age End If If objCustomer.Gender = -1 Then Debug.Print "規定値以外が入力されました" Else Debug.Print objCustomer.Gender End If End Sub
出力結果