INDEX
Implementsの概要
クラスモジュールにインターフェースを実装し、統一的なメソッドを提供する VBAの予約語 | ||
Implements 概要 Implements ステートメントは、VBAのクラスモジュールでインターフェース(共通のメソッドセット)を実装するために使用されます。これにより、異なるクラス間で統一されたメソッドを提供することができます。 わかりやすく説明 クラスに共通のメソッドを持たせるための設計ルールを適用する命令。 |
||
|
Implementsを使った基本的なインターフェースの定義
以下の例では、IShape
というインターフェースを定義し、異なるクラス(円と四角形)で実装します。
' クラスモジュール(IShape) - インターフェースの定義
Option Explicit
Public Sub Draw()
' インターフェース用の空のメソッド
End Sub
解説:
IShape
はインターフェースとして使用。- インターフェースには実装を記述しない(サブルーチンのみ定義)。
Implementsを使ったクラスの実装
以下の例では、IShape インターフェースを実装した Circle(円)クラスと Rectangle(四角形)クラスを作成します。
' クラスモジュール(Circle)
Option Explicit
Implements IShape
Public Sub IShape_Draw()
MsgBox "円を描画します"
End Sub
' クラスモジュール(Rectangle)
Option Explicit
Implements IShape
Public Sub IShape_Draw()
MsgBox "四角形を描画します"
End Sub
解説:
Implements IShape
により、IShape インターフェースを実装。- 各クラスに
IShape_Draw
メソッドを定義(IShape の Draw を実装)。
標準モジュールでの呼び出し
以下の例では、異なるクラスのオブジェクトを同じインターフェースを使って処理します。
' 標準モジュール(Module1)
Sub TestShapes()
Dim shape As IShape
' 円の描画
Set shape = New Circle
shape.Draw
' 四角形の描画
Set shape = New Rectangle
shape.Draw
End Sub
解説:
- 共通のインターフェース(
IShape
)を利用して異なるクラスを統一的に処理。 - オブジェクトを切り替えても同じメソッドを呼び出せる(ポリモーフィズム)。
Excel VBAでのImplementsの活用
Excelシートの異なる操作(セルの書き込みと削除)を統一的に扱う例です。
' クラスモジュール(IExcelAction) - インターフェース定義
Option Explicit
Public Sub Execute()
' インターフェースメソッド
End Sub
' クラスモジュール(WriteCell) - セルに値を入力
Option Explicit
Implements IExcelAction
Public Sub IExcelAction_Execute()
Range("A1").Value = "テスト"
End Sub
' クラスモジュール(ClearCell) - セルをクリア
Option Explicit
Implements IExcelAction
Public Sub IExcelAction_Execute()
Range("A1").ClearContents
End Sub
' 標準モジュール(Module1) - 実行処理
Sub TestExcelAction()
Dim action As IExcelAction
' セルに値を書き込む
Set action = New WriteCell
action.Execute
' セルをクリア
Set action = New ClearCell
action.Execute
End Sub
解説:
IExcelAction
を定義し、異なるアクション(書き込み・削除)を統一的に実行。- 新しいアクションを追加しても、同じインターフェースで実行可能。
Implementsの注意事項
- 標準モジュールでは使用できない: クラスモジュール内でのみ使用可能。
- インターフェースには実装を書かない: インターフェースはメソッドの宣言のみ。
- 実装するメソッド名はインターフェースと同じである必要がある:
InterfaceName_MethodName
の形式を守る。
よくある質問
- Q: Implements の主な用途は何ですか?
- A: クラス間で統一したメソッドを提供し、異なる実装を統一的に扱うために使います。
- Q: インターフェースに変数を定義できますか?
- A: いいえ。インターフェースにはメソッドのみを定義し、変数は含めません。
- Q: Implements を使うメリットは?
- A: 異なるクラスを統一的に扱うことで、コードの拡張性や保守性を向上させます。
まとめ
- Implements ステートメントはクラスモジュールでインターフェースを実装するために使用される。
- インターフェースは共通のメソッドを定義し、異なるクラスがそれを実装する。
- Excel VBAでのオブジェクト指向プログラミングや統一的な操作に活用できる。
- インターフェースには実装を書かず、クラス側でメソッドを実装する必要がある。