ポイントメモ
- 挿入 > クラスモジュール、で追加
- クラスモジュールを入れるフォルダが出現し、その中にクラスファイルが追加される。
- クラスモジュールフォルダ内に、更にフォルダを作ることはできないようだ。
- 左の窓、プロパティでクラス名(ファイル名)編集
- クラス宣言をファイル内に書かない。よって、ファイル内を見てもクラス名は分からない。
- 引数を渡してのコンストラクタは無い。
- インスタンス化時に自動で行われる初期化処理はある。
- クラスに次を書く。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
おわりに。参考
- [VBA] クラスモジュールの使い方 – Qiita
- 昨日までJavaJavaしてた人がいきなりExcelのVBAを実装する羽目になったときのためのメモ – Qiita
- VBAでClass_Initializeに引数を渡したい。 – t-hom’s diary
クラスについては最初の2つがよくまとまっております。
一方で、VBA につきまして、最後の t-hom’s diary サイトが大変素晴らしいですの!今後も多く拝見させていただくことになること存じますわ♪
以上です。