イベントプロシージャについて
標準モジュールに作成されたマクロやVBAコードは実行ボタンを押すことで処理を開始しますが、VBAでは条件を満たす場合に自動で実行されるプログラムを作ることもできます。条件を満たした場合に自動で実行されるVBAコードやマクロのことをイベントプロシージャと呼びます。
今回は特定の条件のときに実行されるイベントプロシージャについてご紹介します。
イベントの種類
イベントプロシージャは起動の条件となる操作がブック(Excelファイル)を対象とするものか、シートを対象とするものかで以下のように大きく2つに分類されます。
ブックを対象オブジェクトとするイベントプロシージャ
ブックに対して処理を行ったときに実行されるプログラムです。よく使われるものは以下のようなものがあります。
①Workbook_Open
ブックを開いたときに処理を実行する
②Workbook_Activate
ブックがアクティブになった時に実行する
③Workbook_BeforeClose
ブックを閉じる前に実行する
④Workbook_BeforeSave
ブックを保存する前に実行する
シートを対象オブジェクトとするイベントプロシージャ
シートに対する処理を行ったときに実行されるプログラムです。代表的なものは以下のイベントで実行されるものです。
①Worksheet_Change
シートの内容を変更したときに実行する
②Worksheet_SelectionChange
シートの中で選択範囲を変更したときに実行する
③Worksheet_Activate
シートがアクティブになった時に実行する
スポンサーリンク
イベントプロシージャのコードの記載方法
①ブックを対象とするイベントプロシージャの場合
ブックを対象オブジェクトとするイベントプロシージャはThisWorkbookにコードを記載します。
ThisWorkbookを右クリックして、コード入力画面を表示します。
左上の方にある「(General)」と書かれている部分をクリックしてWorkbookを選択します。
右上の方の選択ボックスからイベントの種類を選択します。(初期はOpenになっているので、Sub Workbook_Open ~ End Subのコードは自動で表示されます。)
必要な処理を記入します。 今回の場合はファイルを開いたときにメッセージボックスを表示させることにします。
以下のようにSub Workbook_Open ~ End Subの間の部分にコードを記載します。
このファイルを保存した後閉じて、再度開くとマクロを有効にした段階で「開きました」とメッセージボックスが表示されます。
②シートを対象とするイベントプロシージャの場合
シートを対象オブジェクトとするイベントプロシージャはそれぞれのシート(Sheet1(Sheet1)のように書かれた場所)にコード記載します。
Sheet1(Sheet1)を右クリックします。
左上の方にある「(General)」と書かれている部分をクリックしてWorkSheetを選択します。
右上の方の選択ボックスからイベントの種類を選択します。今回はChangeを選択します。
以下のようにSub Worksheet_Change ~ End Subの間の部分にコードを記載します。
これでSheet1に変更を加えると「変更されました」と表示されるようになります。
コメント