Digital_Neko

フリーランスプログラマー

ExcelVBA 初めてのコンストラクタ

今回はクラスモジュールを作り、フィールド、メソッド、コンストラクタを定義
します。図1のようにクラスモジュール「Class1」を挿入します。
最初にクラスモジュールを挿入するとデフォルトではClass1となります。
また図1のオブジェクト名にある「Class1」という名前を変更する事でクラス名を
変更することができます。

図1クラスモジュールの挿入

次にクラスモジュールにコンストラクタを挿入します。図2よりエディタに(General)
とあるプルダウンがあります。そこでClassを選択します。

図2 プルダウン

そして図3のように、Classの右側に「Initialize」を選択するプルダウンがあります。
ここで「Initialize」を選択します。これでコンストラクタが挿入されます。
「 Private Sub Class_Initialize() 」となっている部分です。

図3 Initializeの選択

コンストラクタを定義し、コンストラクタ内に前提条件を記述する事により、
クラスを使用する準備が整います。図4のようにクラスモジュールにコード
を記述します。

図4 クラスモジュールコード

図4のクラスモジュールのフィールドにはInteger型の変数a、bを宣言します。そして
コンストラクタに、a=2、b=3 と記述します。これでインスタンス生成
のタイミングで事前条件が設定され、変数a、bに2と3が代入されます。
また値が代入された事を確認するために、getTotalメソッドを定義し、aとbを加算
した値を戻します。
次に標準モジュールでクラスを使用します。図5のようにSampleプロシージャを
記述します。

図5 標準モジュール

SampleプロシージャにはClass1型のaddという変数を宣言。そしてNewで
インスタンスを生成しています。この時点で変数a、bには値が代入されています。
最後にMsgBox 関数でClass1に記述したgetTotalメソッドを呼び出しています。
結果は5と表示されます。

今回のようにコンストラクタは、事前条件を設定しクラスの使用準備をする事が
できます。