カテゴリー
Microsoft

【Excel VBA】クラスの雛形

VBA クラスの雛形のポイント

  • mstrClassName はログ出力用にすべてのクラスに付けている。
  • コメントは、C# のドキュメントコメントに倣っている。正しいかどうかは不明
  • クラス名を、TypeName(Me) で取得し、コンストラクタでプロパティにセットしている。
  • 完全コンストラクタを意識する場合、セッターは使用しないが書いておく。
  • コンストラクタに引数を持たせることができないため、Init という名前の関数をコンストラクタの代わりとして使う。

VBA クラスの雛形

''' <summary>
''' 雛形
''' </summary>

Option Explicit

Private mstrClassName As String

Private mobjTargetWorksheet As Worksheet

''' <summary>
''' ゲッター : 操作対象ワークシート
''' </summary>
''' <returns>操作対象ワークシート</returns>
Public Property Get TargetWorksheet() As Worksheet
    ' TODO オブジェクトの場合、Set を付け忘れてエラーとなりがちなので注意!
    Set TargetWorksheet = mobjTargetWorksheet
End Property

''' <summary>
''' セッター : 操作対象ワークシート
''' </summary>
''' <param name="objTargetWorksheet">操作対象ワークシート</param>
Public Property Let TargetWorksheet(objTargetWorksheet As Worksheet)
    Set mobjTargetWorksheet = objTargetWorksheet
End Property

''' <summary>
''' コンストラクタ
''' </summary>
Private Sub Class_Initialize()
    mstrClassName = TypeName(Me)
    Debug.Print (mstrClassName & " : Constructor is called.")
End Sub

''' <summary>
''' デストラクタ
''' </summary>
Private Sub Class_Terminate()
    Debug.Print (mstrClassName & " : Destructor is called.")
End Sub

''' <summary>
''' 初期化処理を実行します。
''' </summary>
''' <param name="objTargetWorksheet">操作対象ワークシート</param>
Public Sub Init(ByVal objTargetWorksheet As Worksheet)
    Debug.Print (mstrClassName & " : Init")

    ' 変数をセット
    mobjTargetWorksheet = objTargetWorksheet
End Sub

おわりに

VBA を触っていて、戸惑うことが多いです><。少しでも楽にしようと、コピペで済ませられるクラスの雛形を作ってみました。

それにあたり、次のページが参考になりました。ありがとう存じます!

以上です。

コメントを残す