VBAを学んでいると「Implements」というキーワードに出会います。これは日常的なマクロ作成ではあまり使わないかもしれませんが、クラス設計を工夫する際に強力な機能を発揮します。この記事では、VBAのImplementsの基本概念と、その使いどころをわかりやすく解説します。
VBAのImplementsとは何か
Implementsは、あるクラスに対して「インターフェイス」と呼ばれる共通の仕様を実装するための仕組みです。これにより、複数のクラスで同じメソッド名を持ちながらも、それぞれのクラスで異なる処理を定義できます。簡単に言うと、同じメソッドを持ちながら振る舞いを変えることができるのがImplementsの役割です。
具体的な例:動物の鳴き声をクラスで表現する
たとえば「動物の鳴き声」を表現したい場合、インターフェイスとして「ISound」というクラスモジュールを用意し、その中で「Speak」というメソッドを定義します。
' ISound.cls
Public Sub Speak()
End Sub
次に、それを実装するクラスを作成します。
' Dog.cls
Implements ISound
Private Sub ISound_Speak()
MsgBox "ワンワン!"
End Sub
' Cat.cls
Implements ISound
Private Sub ISound_Speak()
MsgBox "ニャー!"
End Sub
このようにすると、同じ「Speak」メソッドを呼び出しても、クラスによって違う振る舞いを実現できます。
Implementsを使うメリット
Implementsを使うことで、以下のメリットがあります。
- コードの共通化:異なるクラスで同じ仕様を持たせられる。
- 保守性の向上:インターフェイスを基準にしているので後から実装を変えても呼び出し側は修正不要。
- 拡張性:新しいクラスを追加する際もインターフェイスに従えば既存コードに影響が少ない。
これは、小規模なマクロでは不要かもしれませんが、規模が大きくなると非常に有効です。
よくある誤解と注意点
Implementsは「多重継承」のようなものではなく、親クラスの機能を引き継ぐのではありません。あくまで「同じメソッドやプロパティを必ず実装する契約を結ぶ」という考え方です。
また、インターフェイスそのものには処理を書けないため、必ず実装クラス側でメソッドを定義しなければエラーになります。
実務での活用シーン
Implementsは、たとえば以下のような場面で役立ちます。
- 異なる種類のデータ処理(CSV、Excel、Accessなど)に共通の「Load」「Save」メソッドを持たせる。
- UIの部品(ボタン、チェックボックス、テキストボックス)に共通の「Draw」メソッドを実装する。
- 複数のアルゴリズムを切り替えて利用する仕組みを作る。
このように「処理の入り口は同じ、だけど中身は違う」という場面で特に有効です。
まとめ
VBAのImplementsは、複数のクラスに共通のインターフェイスを与え、同じメソッド名でも異なる処理を実現できる仕組みです。小さなマクロでは出番が少ないかもしれませんが、規模が大きくなると設計の柔軟性と保守性を高める強力な手段となります。今すぐ使わなくても「こういう仕組みがある」と知っておくだけで、将来の開発に役立つでしょう。


コメント