Digital_Neko

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

Excel VBA クラスモジュールを使ってみよう

今回はクラスモジュールの使い方を説明します。クラスモジュールを挿入。
フィールドに変数を定義。セッターとメソッドを準備し、標準モジュールで
使ってみましょう。
まずクラスモジュールの挿入方法は、図1のように挿入よりクラスモジュールを
選択します。

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

そうすると、クラスモジュールが挿入されます。次にクラスモジュールのオブジェクト
名を任意の名前にします(図2)。これがクラスの型になります。
今回はAddClass型とします。
String型と同じように型名を自分で決める事ができます。

図2 クラスモジュール

そうすると、図2のようにクラスモジュールにAddClassというクラスが出来上がります。最初はClass1となっているかと思います。

次にクラスモジュールの中にコードを書いていきます(図3)。

図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)。

図4 Sample

今回はクラス名をAddClassとしているので、AddClass型のsumという変数
を定義します。そしてSet sum = New AddClass としてインスタンスを生成
してその参照をsumに代入します。
次に、セッターを使いフィールドに値を代入します。sum.setA = 2、sum.setB = 3
のコードでクラスに定義したsetA、setBを呼び出しています。

これでフィールドに値を代入するのが完了です。次にAddClassに用意したadd
メソッドを呼び出してメッセージボックス関数で表示しています。

結果は5と表示されます。

クラスモジュールでは情報隠蔽の関係から、なるべくフィールドに直接アクセス
させたくないので、セッターを準備しています。
フィールドの値をPublicにしてしまうと変数に直接アクセスができてしまいます。
またセッターのみとする事で値の取得をできないようにしています。