Digital_Neko

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

ExcelVBA ポリモーフィズムでシート処理

今回はインターフェースにシートの処理を実装したクラスを2つ用意します。
そしてクラスよりインスタンスを生成し、コレクションに追加します。
最後に拡張For文でインスタンスを一つずつ取り出し、シート処理をポリモーフィズム
を利用して行います。まず「Sheet1」、「Sheet2」を用意します。セルには
図1、図2のように値を代入します。

図1 Sheet1
図2 Sheet2

次にインターフェースを定義します。クラスモジュール名を「SheetInterface」
とします。インターフェースにはメソッドのみ定義します。

図3 インターフェース

続いて、シートに行う実際の処理をクラスモジュール、図4「SheetActionA」
、図5「SheetActionB」に実装します。

図4 SheetActionA
図5 SheetActionB

またクラスモジュール図6「Person」を用意し拡張For文で連続してメソッドを動作
させます。

図6 Personクラス

最後に標準モジュールに処理を書いていきます。図7

図7 標準モジュール

標準モジュールでは図4、図5のクラスの型で最初にインスタンスを生成し値を
セットします。またポリモーフィズムで動作させたいので、インターフェース型
に生成したクラスを改めてセットします。
その後インタンスをコレクションに追加します。

そしてメソッドを動作させるためにPersonクラスにインスタンスの入った
コレクションをセットします。その後Personクラスの「action」メソッドを
実行すれば、「Sheet1」、「Sheet2」への処理がポリモーフィズムで動作します。

今回はインターフェースと拡張For文、コレクションを利用し、ポリモーフィズム
によりシートの処理を行なって見ました。
シート処理の実装内容を変える事により、別々のシートに連続して異なる処理を
行うことができます。

またVBAではインターフェースにプロパティ保持用のフィールドが定義できるの
ですが、今回はJava感覚で使いたいためこのようにしてみました。