ExcelWork.info

WithEvents キーワードを使ったイベントプロシージャ

イベント発生時の処理を作成

作成・実行の流れは以下のとおりです。

  1. WithEvents キーワードを使用して、クラスモジュール上にアプリケーション等のイベントプロシージャを作成する。
  2. 上記イベントプロシージャを有効にするプロシージャを作成する。(標準モジュール、ThisWorkbook モジュール、各シートごとのモジュールに記述します。)
  3. 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ソース



実行結果

「Sheet1」を選択した時