WithEvents キーワードを使ったイベントプロシージャ
イベント発生時の処理を作成
作成・実行の流れは以下のとおりです。
- WithEvents キーワードを使用して、クラスモジュール上にアプリケーション等のイベントプロシージャを作成する。
- 上記イベントプロシージャを有効にするプロシージャを作成する。(標準モジュール、ThisWorkbook モジュール、各シートごとのモジュールに記述します。)
- 2 で作成したプロシージャを実行する。(イベントプロシージャが待機状態になります。)
2 のプロシージャは、Workbook_Open イベントプロシージャ内(ThisWorkbook)に記述することで、ワークブック起動と同時に、アプリケーションのイベントプロシージャが待機状態になります。
WithEvents キーワードは、クラスモジュール上でしか使用できません。
WithEvents キーワードの使い方
{ Private | Public } WithEvents name As type
項目の説明
- name ・・・ オブジェクト変数の名前を定義します。
- type ・・・ name の型を指定します。
インスタンスの作成
Dim instance As New classname
または
Dim instance [ As instancetype ]
Set instance = New classname
項目の説明
- instance ・・・ インスタンス名を指定
- classname ・・・ クラス名を指定
- instancetype ・・・ インスタンスのデータ型を指定します。
イベントの種類と作成
クラスモジュールの宣言セクションに、Application 型のオブジェクト変数を定義すると、オブジェクトボックス(② の部分)で、定義した変数を選択できるようになります。選択すると、プロシージャボックス(③ の部分)に、イベントが表示されます。
クラスモジュールの宣言セクションに、Worksheet 型のオブジェクト変数を定義すると、プロシージャボックスには、Worksheet オブジェクトのイベントが表示されます。
WithEvents キーワード 使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 |
Public WithEvents myApp As Application 'シートがアクティブになった時のイベント Private Sub myApp_SheetActivate(ByVal Sh As Object) 'シート名を表示します MsgBox Sh.Name End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Dim cc As New Class1 'ブック起動時のイベント Private Sub Workbook_Open() Set cc.myApp = Application End Sub 'ブックを閉じる直前のイベント Private Sub Workbook_BeforeClose(Cancel As Boolean) Set cc = Nothing End Sub |
実行結果
「Sheet1」を選択した時
関連記事
-
Property プロシージャ(Property Let ステートメント)
Property プロシージャ Property プロシージャは、変数やクラスの …
-
Property プロシージャ(Property Get ステートメント)
Property プロシージャ Property プロシージャは、変数やクラスの …
-
Property プロシージャ(Property Set ステートメント)
Property プロシージャ Property プロシージャは、変数やクラスの …
-
VBAで、クラスを作成(クラスモジュール・インスタンス)
クラスの作成 VBA で、クラスを作成するには、クラスモジュールを使用します。ク …
-
VBAで、クラスを作成(コンストラクタ・デストラクタ)
VBA のコンストラクタとデストラクタ コンストラクタ コンストラクタは、クラス …