Excel VBA クラスモジュールを使ってみよう
今回はクラスモジュールの使い方を説明します。クラスモジュールを挿入。
フィールドに変数を定義。セッターとメソッドを準備し、標準モジュールで
使ってみましょう。
まずクラスモジュールの挿入方法は、図1のように挿入よりクラスモジュールを
選択します。
そうすると、クラスモジュールが挿入されます。次にクラスモジュールのオブジェクト
名を任意の名前にします(図2)。これがクラスの型になります。
今回はAddClass型とします。
String型と同じように型名を自分で決める事ができます。
そうすると、図2のようにクラスモジュールにAddClassというクラスが出来上がります。最初はClass1となっているかと思います。
次にクラスモジュールの中にコードを書いていきます(図3)。
フィールドはPrivateとして、アクセスできないようにします。このままだと
変数a、bの値を設定できないので、セッターを用意します。
Property let setA(Byval value as Integer)は、Integer型の引数を受け取り、
フィールドaに値を代入します。
Property let setB(Byval value as Integer)も同様に、フィールドbに値を
代入します。
さらに、フィールドの値を使用するメソッドとして今回はaddメソッドを準備します。
内容はaとbの値を足し算してその値を返します。これで、クラスの準備が完了です。
次にいつも利用している標準モジュールにSampleというSubプロシージャを用意
します(図4)。
今回はクラス名をAddClassとしているので、AddClass型のsumという変数
を定義します。そしてSet sum = New AddClass としてインスタンスを生成
してその参照をsumに代入します。
次に、セッターを使いフィールドに値を代入します。sum.setA = 2、sum.setB = 3
のコードでクラスに定義したsetA、setBを呼び出しています。
これでフィールドに値を代入するのが完了です。次にAddClassに用意したadd
メソッドを呼び出してメッセージボックス関数で表示しています。
結果は5と表示されます。
クラスモジュールでは情報隠蔽の関係から、なるべくフィールドに直接アクセス
させたくないので、セッターを準備しています。
フィールドの値をPublicにしてしまうと変数に直接アクセスができてしまいます。
またセッターのみとする事で値の取得をできないようにしています。