ExcelVBA ポリモーフィズムでシート処理
今回はインターフェースにシートの処理を実装したクラスを2つ用意します。
そしてクラスよりインスタンスを生成し、コレクションに追加します。
最後に拡張For文でインスタンスを一つずつ取り出し、シート処理をポリモーフィズム
を利用して行います。まず「Sheet1」、「Sheet2」を用意します。セルには
図1、図2のように値を代入します。
次にインターフェースを定義します。クラスモジュール名を「SheetInterface」
とします。インターフェースにはメソッドのみ定義します。
続いて、シートに行う実際の処理をクラスモジュール、図4「SheetActionA」
、図5「SheetActionB」に実装します。
またクラスモジュール図6「Person」を用意し拡張For文で連続してメソッドを動作
させます。
最後に標準モジュールに処理を書いていきます。図7
標準モジュールでは図4、図5のクラスの型で最初にインスタンスを生成し値を
セットします。またポリモーフィズムで動作させたいので、インターフェース型
に生成したクラスを改めてセットします。
その後インタンスをコレクションに追加します。
そしてメソッドを動作させるためにPersonクラスにインスタンスの入った
コレクションをセットします。その後Personクラスの「action」メソッドを
実行すれば、「Sheet1」、「Sheet2」への処理がポリモーフィズムで動作します。
今回はインターフェースと拡張For文、コレクションを利用し、ポリモーフィズム
によりシートの処理を行なって見ました。
シート処理の実装内容を変える事により、別々のシートに連続して異なる処理を
行うことができます。
またVBAではインターフェースにプロパティ保持用のフィールドが定義できるの
ですが、今回はJava感覚で使いたいためこのようにしてみました。