【VBA】クラスを使用する

前提

・クラスのメンバは基本的にPublicにする。
 → 少なくともVBAにおいては 、Privateにしてゲッター及びセッターを記載するのは
   意味が無い。結局Publicにしているのと同じ

・クラスのメンバを外部から設定不可にしたい場合、
 ┗Privateにしてセッターを記載しない。ゲッターのみ記載する
 ┗コンストラクタ内で設定する

サンプルプログラム

●クラスモジュール「ManClass」の定義

Option Explicit

Private Sex_ As String
Public Name As String
Public Age As String

'コンストラクタ
Private Sub Class_Initialize()
  Sex_ = "男"
End Sub

'メンバ「Sex_」のゲッター
Public Property Get Sex() As String
    Sex = Sex_
End Property

'メンバ「Sex_」はprivate、かつセッター未記載のため、外部からは設定不可
'コンストラクタ内でのみ設定可能

●クラスモジュール「ManClass」の使用

Sub test()
    Dim man As manClass
    
    'クラスをインスタンス化してメンバを設定
    Set man = New manClass
    man.Name = "鈴木"
    man.Age = "30歳"
    
    'セルに設定
    Cells(1, 1) = man.Name
    Cells(2, 1) = man.Age
    Cells(3, 1) = man.Sex
End Sub

実行結果

タイトルとURLをコピーしました