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 を触っていて、戸惑うことが多いです><。少しでも楽にしようと、コピペで済ませられるクラスの雛形を作ってみました。
それにあたり、次のページが参考になりました。ありがとう存じます!
以上です。