Excel VBA ブックとワークシートのイベントプロシージャ―

スポンサーリンク

イベントプロシージャー

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
セルをダブルクリックして電卓を起動させる

ブックイベントプロシージャー実行コード例

以下のリンクでご確認ください。
ブックを開いた時にマクロを実行する
入力が必要なセルが未入力の場合メッセージを出す
入力漏れを確認してからブックを保存する方法
シートの印刷をできないようにする
ブックを開いたときにユーザーフォームを表示する


以上で、ブックとワークシートのイベントプロシージャーについての解説を終了します。
ありがとうございました。

スポンサーリンク

関連記事・広告