VBAで、クラスを作成(クラスモジュール・インスタンス)
クラスの作成
VBA で、クラスを作成するには、クラスモジュールを使用します。クラスモジュールは、VBE(Visual Basic Editor)のメニューバーの「挿入」から「クラスモジュール」をクリックします。名前は、「Class1」「Class2」… と自動的に付けられますが変更することも可能です。この名前が、クラス名となります。
( ※ VBA のクラスには、継承はありません。)
クラスのプロパティ
クラスモジュールの宣言セクションに、変数を宣言します。この変数が、クラスのプロパティとなります。
変数宣言の構文やスコープに関する詳細に関しては、変数やプロシージャのスコープ(適用範囲) を参照してください。
クラスのメソッド
クラスのプロパティが作成できたら、クラスモジュールに、プロシージャーを作成します。これが、クラスのメソッドとなります。
プロシージャーの作成の詳細は、プロシージャを作成する を参照してください。
クラスモジュールでの、プロシージャーの適用範囲に関しては、変数やプロシージャのスコープ(適用範囲) を参照してください。
インスタンス化
クラスを使用するには、インスタンス化する必要があります。これは、New キーワードを使って、標準モジュールに記述していきます。
Dim instance As New classname
または
Dim instance [ As instancetype ]
Set instance = New classname
項目の説明
- instance ・・・ 作成するインスタンスの名前を指定します。
- classname ・・・ クラス名を指定します。
- instancetype ・・・ インスタンスのデータ型を指定します。バリアント型(Variant)または、オブジェクト型(Object)を指定します。
インスタンスの破棄
クラスを使用した後は、Nothing キーワードを使用して、インスタンスを破棄します。これで、メモリが開放されます。
Set instance = Nothing
項目の説明
- instance ・・・ 破棄するインスタンスの名前を指定します。
クラス 使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
'クラスのプロパティ Public retNum As Double 'クラスのメソッド Public Sub AddNumber(num) '引数 num が数値の場合、その値を加算 If IsNumeric(num) Then retNum = retNum + num End If End Sub |
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 |
Sub Sample01_Class1() 'インスタンス作成 Dim cc As New Class1 '引数が数値の場合追加します cc.AddNumber (100) cc.AddNumber (25.5) cc.AddNumber (-2000) cc.AddNumber ("あいう") '結果を表示 MsgBox cc.retNum 'インスタンスを破棄 Set cc = Nothing End Sub Sub Sample02_Class1() 'インスタンス作成 Dim cc Set cc = New Class1 Dim i As Integer '1 から 100 までの合計値を求めます For i = 1 To 100 cc.AddNumber (i) Next i '結果を表示 MsgBox cc.retNum 'インスタンスを破棄 Set cc = Nothing End Sub |
実行結果
Sub Sample01_Class1() の実行結果
Sub Sample02_Class1() の実行結果
関連記事
-
Property プロシージャ(Property Get ステートメント)
Property プロシージャ Property プロシージャは、変数やクラスの …
-
Property プロシージャ(Property Set ステートメント)
Property プロシージャ Property プロシージャは、変数やクラスの …
-
WithEvents キーワードを使ったイベントプロシージャ
イベント発生時の処理を作成 作成・実行の流れは以下のとおりです。 WithEve …
-
VBAで、クラスを作成(コンストラクタ・デストラクタ)
VBA のコンストラクタとデストラクタ コンストラクタ コンストラクタは、クラス …
-
Property プロシージャ(Property Let ステートメント)
Property プロシージャ Property プロシージャは、変数やクラスの …