カテゴリー
Microsoft

【Excel VBA】クラスの雛形

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

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

【Excel VBA】はじめて VBA でクラスを使う時のためのメモ

ポイントメモ

  • 挿入 > クラスモジュール、で追加
  • クラスモジュールを入れるフォルダが出現し、その中にクラスファイルが追加される。
  • クラスモジュールフォルダ内に、更にフォルダを作ることはできないようだ。
  • 左の窓、プロパティでクラス名(ファイル名)編集
  • クラス宣言をファイル内に書かない。よって、ファイル内を見てもクラス名は分からない。
  • 引数を渡してのコンストラクタは無い。
  • インスタンス化時に自動で行われる初期化処理はある。
    • クラスに次を書く。Private Sub Class_Initialize()
    • Set CInstance = New ClassSkeleton、したときに呼ばれる。
    • 宣言したプロパティ変数を、明示的に初期化するのによい。
  • デストラクタがある
    • クラスに次を書く。Private Sub Class_Terminate()
    • Set CInstance = Nothing すれば呼ぶことができる。
  • プロパティについて。プロパティプロシージャを使う。セッターと、ゲッターがある。
    • 変数宣言は、クラス内で Private で宣言し、クラス外からはセッター、ゲッターを使用して操作する。
private _hoge As String
  • セッター。
Public Property Let Hoge(strValue As String)
    _hoge = strValue
End Property
  • ゲッター。
Public Property Get Hoge() As String
    Hoge = _hoge
End Property
  • クラス外からセットするとき。
    CInstance.Hoge = "セッターに格納"
    
  • クラス外からゲットするとき。
Dim hoge As String
hoge = CInstance.Hoge
  • TypeName(Me) でこれを書いたクラス名を取得することができる。
  • インスタンス化するときは、変数宣言とまとめないで、2行に分けて行う。
    Class_Initialize プロシージャ呼び出しのタイミングを制御するため。
Dim fuga As Fuga
Set fuga = New Fuga