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」を選択した時
関連記事
-  
            
              - 
      
VBAで、クラスを作成(コンストラクタ・デストラクタ)
VBA のコンストラクタとデストラクタ コンストラクタ コンストラクタは、クラス …
 
-  
            
              - 
      
Property プロシージャ(Property Set ステートメント)
Property プロシージャ Property プロシージャは、変数やクラスの …
 
-  
            
              - 
      
VBAで、クラスを作成(クラスモジュール・インスタンス)
クラスの作成 VBA で、クラスを作成するには、クラスモジュールを使用します。ク …
 
-  
            
              - 
      
Property プロシージャ(Property Get ステートメント)
Property プロシージャ Property プロシージャは、変数やクラスの …
 
-  
            
              - 
      
Property プロシージャ(Property Let ステートメント)
Property プロシージャ Property プロシージャは、変数やクラスの …
 
        

