VBA クラスの雛形のポイント
- mstrClassName はログ出力用にすべてのクラスに付けている。
- コメントは、C# のドキュメントコメントに倣っている。正しいかどうかは不明
- クラス名を、
TypeName(Me)で取得し、コンストラクタでプロパティにセットしている。 - 完全コンストラクタを意識する場合、セッターは使用しないが書いておく。
- コンストラクタに引数を持たせることができないため、Init という名前の関数をコンストラクタの代わりとして使う。
VBA クラスの雛形
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | ''' <summary>''' 雛形''' </summary>Option ExplicitPrivate mstrClassName As StringPrivate mobjTargetWorksheet As Worksheet''' <summary>''' ゲッター : 操作対象ワークシート''' </summary>''' <returns>操作対象ワークシート</returns>Public Property Get TargetWorksheet() As Worksheet ' TODO オブジェクトの場合、Set を付け忘れてエラーとなりがちなので注意! Set TargetWorksheet = mobjTargetWorksheetEnd Property''' <summary>''' セッター : 操作対象ワークシート''' </summary>''' <param name="objTargetWorksheet">操作対象ワークシート</param>Public Property Let TargetWorksheet(objTargetWorksheet As Worksheet) Set mobjTargetWorksheet = objTargetWorksheetEnd 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 = objTargetWorksheetEnd Sub |
おわりに
VBA を触っていて、戸惑うことが多いです><。少しでも楽にしようと、コピペで済ませられるクラスの雛形を作ってみました。
それにあたり、次のページが参考になりました。ありがとう存じます!
以上です。