ray88’s diary

お仕事で困ったとき用の自分用の覚書

VBA クラスモジュール プロパティプロシージャ(Let と Get)

■クラスモジュール(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

出力結果
f:id:ray88:20210508103436p:plain