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