イベントプロシージャー
VBAでは、ある操作をきっかけとして自動的に、実行されるプロシージャーのことを「イベントプロシージャー」といいます。
自動実行のきっかけとなる操作のことを「イベント」と呼び「イベント」は、ブックやワークシート、ユーザーフォームのActiveX【アクティブエックス】コントロールなどのオブジェクトに対して発生します。
この「イベント」を利用して特定の処理を実行するには「イベントプロシージャー」を作成します。
イベントプロシージャーの作成場所
イベントプロシージャ―は、ブック、ワークシート、ユーザーフォームなどのイベントが発生する対象となる「オブジェクトモジュール」に記述します。
モジュールとは、プロシージャ―を記述するためのシートです。ブックやワークシートのイベントプロシージャーは「Microsoft Excel Objects」の中のそれぞれのオブジェクトに対応したモジュールに作成しユーザーフォームのイベントプロシージャーは「フォーム」の中のモジュールに作成します。
イベントプロシージャーの作成方法
イベントプロシージャーは、イベントの対象となるオブジェクトのコードウィンドウに記述します。
プロシージャー名は対象オブジェクトを「オブジェクトボックス」から選択し実行するイベントを「プロシージャーボックス」から選択します。
「Private Sub」【プライベートサブ】プロシージャーが自動的に作成され、「Private Sub」プロシージャーは、このプロシージャーが記述されているモジュール内のみ有効で、ほかのモジュールから呼び出すことのできません。
ワークシートイベントプロシージャーの種類
イベント名 | イベントが発生するタイミング |
---|---|
Activate 【アクティベート】 | シートがアクティブになったとき |
BeforeDoubleClick 【ビフォアダブルクリック】 | シートをダブルクリックしたとき |
BeforeRightClick 【ビフォアライトクリック】 | シートを右クリックしたとき |
Calculate 【カルクレート】 | シートが再計算されたとき |
Chenge 【チェンジ】 | シートのセルの値が変更されたとき |
Deactivate 【ディアクティベート】 | シートがアクティブでなくなったとき |
FollowHyperlink 【フォローハイパーリンク】 | シート上のハイパーリンクをクリックしたとき |
PivotTableUpdate 【ピボットテーブルアップデイト】 | シート上のピボットテーブルが更新されたとき |
SelectionChange 【セレクションチェンジ】 | シートの選択範囲が変更されたとき |
ブックイベントプロシージャーの種類
イベント名 | イベントが発生するタイミング |
---|---|
Activate 【アクティベート】 | ブックがアクティブになったとき |
AddinInstall 【アドインインストール】 | ブックがアドインとして組み込まれたとき |
AddinUninstall 【アドインアンインストール】 | ブックのアドインとして組み込みが 解除されたとき |
AfterXmlExport 【アフターエックスエムエルエクスポート】 | XMLをエクスポートしたあと |
AfterXmlImport 【アフターエックスエムエルインポート】 | XMLをインポートしたあと |
BeforeClose 【ビフォアクローズ】 | ブックを閉じる操作をしたとき |
BeforePrint 【ビフォアプリント】 | ブックを印刷する操作をしたとき |
BeforeSave 【ビフォアセーブ】 | ブックを保存する操作をしたとき |
BeforeXmlExport 【ビフォアエックスエムエルエクスポート】 | XMLをエクスポートする前 |
BeforeXmlImport 【ビフォアエックスエムエルエクスポート】 | XMLをインポートする前 |
Deactivate 【ディアクティベート】 | ブックがアクティブでなくなったとき |
NewSheet 【ニューシート】 | 新しいシートをブックに追加したとき |
Open 【オープン】 | ブックをひらいたとき |
PivotTableCloseConnection 【ピボットテーブルクローズコネクション】 | ピボットテーブルレポートへの接続が 閉じたとき |
PivotTableOpenConnection 【ピボットテーブルオープンコネクション】 | ピボットテーブルへの接続が開いたとき |
RowsetComplete 【ロウセットコンプリート】 | OLAPピボットテーブルで行セットアクションを 起動するか、レコードセットを詳細表示したとき |
SheetActivate 【シートアクティベート】 | ブック内のシートがアクティブになったとき |
SheetBeforeDoubleClick 【シートビフォアダブルクリック】 | ブック内のシート上でダブルクリックしたとき |
SheetBeforeRightClick 【シートビフォアライトクリック】 | ブック内のシート上で右クリックしたとき |
SheetCalculate 【シートカルクレート】 | ブック内のシートで再計算されたとき |
SheetChange 【シートチェンジ】 | ブック内のシートのセルが変更されたとき |
SheetDeactivate 【シートディアクティベート】 | ブック内のシートがアクティブになったとき |
SheetFollowHyperlink 【シートフォローハイパーリンク】 | ブック内のシート上にあるハイパーリンクを クリックしたとき |
SheetPivotTableUpdete 【シートピボットテーブルアップデイト】 | ブック内のピボットテーブルレポートが 更新されたとき |
SheetSelectionChange 【シートセレクションチェンジ】 | ブック内のワークシートで選択範囲を 変更したとき |
Sync 【シンク】 | ブックがサーバー上のブックと同期されたとき |
WindowActivate 【ウィンドウアクティベート】 | ブックウィンドウがアクティブになったとき |
WindowDeactivate 【ウィンドウディアクティベート】 | ブックウィンドウがアクティブでなくなったとき |
WindowResize 【ウィンドウリサイズ】 | ブックウィンドウの大きさが変更になったとき |
ブックとシートの共通のイベントについて
イベントの中には、ブックとワークシートの両方に共通のものがあります。ブックのシートに関するイベントは全シートが対象になり、シートのイベントは個々のシートが対象になります。なお、両方使用した場合は、シートのイベントプロシージャーが先に実行され後にブックのイベントプロシージャーが実行されます。
「Workbook_Open」イベントを無効にしてブックを開く方法
Workbook_Openイベントを設定するとブックを開くと同時にイベントプロシージャーが実行されますが、ブックをひらくときに「Shiht」キーを押しながらブックを開くとWorkbook_Openイベントプロシージャは無効になります。
ワークシートイベントプロシージャー実行コード例
以下のリンクでご確認ください。
セルのドロップダウンリストを作成して入力効率UP
セルをダブルクリックして電卓を起動させる
ブックイベントプロシージャー実行コード例
以下のリンクでご確認ください。
ブックを開いた時にマクロを実行する
入力が必要なセルが未入力の場合メッセージを出す
入力漏れを確認してからブックを保存する方法
シートの印刷をできないようにする
ブックを開いたときにユーザーフォームを表示する
以上で、ブックとワークシートのイベントプロシージャーについての解説を終了します。
ありがとうございました。