VBAのクラス
VBAでのクラスに関する備忘録です.
目次
クラスファイル
エクスポート・インポートするときの拡張子はcls
となります.
クラスの書き方
アクセス修飾子
Private
・Public
でメンバ変数のスコープを定めます.
次は,クラスの内部で使用するメンバ変数の定義例です.
Private メンバ変数 As 型 |
プロパティ
内部変数とする場合,取得はGet
,設定は変数ならLet
,オブジェクトならSet
で行います.
Private メンバ変数 As 型
であるとき,getは
Public Property Get プロパティ名() As 型 |
によって行い,setは
Public Property Let プロパティ名(ByVal 変数 As 型) |
によって行います.(オブジェクトを返す場合はLet
をSet
にします.)
コンストラクタ・デストラクタ
コンストラクタは
Private Sub Class_Initialize() |
と書き,デストラクタは
Private Sub Class_Terminate() |
と書きます.
メソッド
SubプロシージャやFunctionプロシージャは通常通りの書き方ができます.
適宜アクセス修飾子を前置して使います.
オブジェクトを返す関数を作成するときは,Set
が必要です.
self
インスタンス自身を指すにはMe
とします.
クラスの使い方
x
をプロパティ,x
に作用するxMove
メソッドを持つMyClass
クラスを通常のモジュールから呼び出す例です.
Sub クラスの使用例() |
コレクション
インスタンスをコレクションで扱うことができます.
コレクションは
Dim コレクション名 As Collection |
によって定義します.
コレクションへの追加は
コレクション名.Add インスタンス, キー |
によって行います.
削除はRemove
メソッド,取得はItem(キー)
メソッドです.
参考文献
スピル関数やPower Query,コメントへのリプライなどの新しい機能が紹介されているほか,他のプログラミング言語で処理することの多いファイル操作や読み書きもマクロでパッケージ化して第三者に渡したい場合に助けとなる逆引き辞典です.
- 大村あつし・古川順平 (2021)「Excel VBA コードレシピ集」技術評論社.
いつも隣にITのお仕事にクラスモジュールの入門的解説があります.