※本ブログのページには広告主との提携による広告や宣伝、プロモーションが含まれます。当ブログを経由しての商品の購入や、サービス申し込みが発生すると、それらの提携企業からの成果報酬を受けとる場合があります。

VBA|イベントプロシージャ一覧(ワークブックイベント)

エクセルVBAのワークブックイベントまとめ記事のトップ画像

エクセルVBAのイベントとは

VBAマクロを活用して効率的に作業を行うためには、マクロの起動イベントを理解することが重要です。イベントまたはイベントプロシージャと呼ばれるものは、そのプロシージャに指定されたマクロを実行するきっかけです。

Excelでマクロを実行する場合、ユーザーによるボタンクリックをきっかけにするものを思い浮かべますが、ワークブックやワークシートで特定の操作がおこなわれることでマクロを実行するといったものも準備されています。

例えば、ワークブックイベントにはワークブックを開いたことでマクロが起動する、ワークシート上で選択しているセル範囲に変化があったときにマクロが起動するなどがわかりやすいですが、これらのほかにもさまざまなものが存在しています。

この記事では、エクセルVBAマクロを起動するイベントプロシージャの内、ワークブックオブジェクトで指定できるイベントを紹介していきます。

それぞれのマクロの処理に応じたイベントを指定すればに使用者にとってやさしいプログラムが実装できます。

独学でプログラミングをはじめてみたけど、このままの学習方法に不安を感じているのなら、
オンラインスクールで現役エンジニアのサポートがあるテックアカデミーがおすすめ。
スキマ時間に学べて仕事も保証。必ず副業、始められます。まずは無料でプログラミング体験

ワークブックのイベント

ワークブックイベントの指定とその内容について説明します。

ワークブックイベントは以下のものが存在します。それぞれのイベントがエクセル上のどのような操作で発生するかの具体例はそれぞれのワークブックイベント内で紹介しています。

オブジェクト
または
モジュール
イベント 引数 戻り値
ワークブック(ThisWorkbook) Workbook.Activate なし なし
Workbook.AddinInstall なし なし
Workbook.AddinUninstall なし なし
Workbook.AfterRemoteChange なし なし
Workbook.AfterSave あり なし
Workbook.AfterXmlExport あり なし
Workbook.AfterXmlImport あり なし
Workbook.BeforeClose あり なし
Workbook.BeforePrint あり なし
Workbook.BeforeRemoteChange なし なし
Workbook.BeforeSave あり なし
Workbook.BeforeXmlExport あり なし
Workbook.BeforeXmlImport あり なし
Workbook.Deactivate なし なし
Workbook.ModelChange あり なし
Workbook.NewChart あり なし
Workbook.NewSheet あり なし
Workbook.Open なし なし
Workbook.PivotTableCloseConnection あり なし
Workbook.PivotTableOpenConnection あり なし
Workbook.RowsetComplete あり なし
Workbook.SheetActivate あり なし
Workbook.SheetBeforeDelete あり なし
Workbook.SheetBeforeDoubleClick あり なし
Workbook.SheetBeforeRightClick あり なし
Workbook.SheetCalculate あり なし
Workbook.SheetChange あり なし
Workbook.SheetDeactivate あり なし
Workbook.SheetFollowHyperlink あり なし
Workbook.SheetLensGalleryRenderComplete あり なし
Workbook.SheetPivotTableAfterValueChange あり なし
Workbook.SheetPivotTableBeforeAllocateChanges あり なし
Workbook.SheetPivotTableBeforeCommitChanges あり なし
Workbook.SheetPivotTableBeforeDiscardChanges あり なし
Workbook.SheetPivotTableChangeSync あり なし
Workbook.SheetPivotTableUpdate あり なし
Workbook.SheetSelectionChange あり なし
Workbook.SheetTableUpdate あり なし
Workbook.Sync あり なし
Workbook.WindowActivate あり なし
Workbook.WindowDeactivate あり なし
Workbook.WindowResize あり なし
※VBAのバージョンは7.1のものです。

ワークブックのイベントの指定方法

VBEのプロジェクトエクスプローラーでワークブックモジュールを選択し、ワークブックのプロシージャ作成画面を開きます。ワークブックモジュールは特に変更などしていない場合、オブジェクト名が「ThisWorkbook」となっています。

もし、お使いのVBEの画面にプロジェクトエクスプローラーが表示されていない場合は、VBE画面の上部にある[表示]より、プロジェクトエクスプローラーを選択してください。

VBEのプロジェクトエクスプローラー(モジュールの選択)
VBEのコード画面(オブジェクトとイベントの選択)

画面の左側でオブジェクトを選択します(画面の場合はWorkbookを選択中)。右側がプロシージャで選択可能なイベント一覧が表示されてます。

ワークブックイベントだからワークブックモジュールにマクロを作っていくんだね。

ワークブックのイベントの種類と内容

ここではワークブックのイベントプロシージャを紹介します。

※使い勝手のよさそうなイベントには、ほかのサンプルマクロ記事へのリンクをつけています。

気になるイベントにリンクがあればそちらも参考にしてね。

Workbook.Activate

ワークブック(ファイル)がアクティブになったことをきっかけにするイベントです。

Private Sub Workbook_Activate()

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_Activate"

End Sub

Workbook.AddinInstall

ワークブック(ファイル)がアドインとしてインストールされたことをきっかけにするイベントです。
※アドインはソフトに機能を追加するプログラムやそれを実行することです。

Private Sub Workbook_AddinInstall()

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_AddinInstall"

End Sub

Workbook.AddinUninstall

ワークブック(ファイル)がアドインとしてアンインストールされたことをきっかけにするイベントです。
※アドインはソフトに機能を追加するプログラムやそれを実行することです。

Private Sub Workbook_AddinUninstall()

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_AddinUninstall"

End Sub

Workbook.AfterRemoteChange

ワークブック(ファイル)がリモートユーザーによって変更されたことをきっかけにするイベントです。

Private Sub Workbook_AfterRemoteChange()

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_AfterRemoteChange"

End Sub

Workbook.AfterSave

ワークブック(ファイル)の保存が正常に実行されたことをきっかけにするイベントです。

引数 必須/省略可 データの型(タイプ) 備考
Success 必須 ブーリアン型
(Boolean)
保存が成功した場合はTrue、それ以外の場合はFalseになります。
Private Sub Workbook_AfterSave(ByVal Success As Boolean)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_AfterSave"

End Sub

Workbook.AfterXmlExport

ワークブック(ファイル)からXMLデータが保存かエクスポートが実行されたことをきっかけにするイベントです。
※XMLデータとはHTMLなどと同じくマークアップ言語で構成されたデータのことです。HTMLはウェブサイトのコンテンツ(テキストや画像)の表示をするために利用されるものですが、XMLはシステム間のデータのやり取りに利用されるものです。

引数 必須/省略可 データの型(タイプ) 備考
Map 必須 XmlMap データの保存またはエクスポートに使用されたスキーママップ
Url 必須 ストリング型
(String)
エクスポートされたXMLファイルの場所
Result 必須 XlXmlExportResult 保存またはエクスポート操作の結果を示します。
成功の場合は0、失敗の場合は1となります。
Private Sub Workbook_AfterXmlExport(ByVal Map As XmlMap, ByVal Url As String, ByVal Result As XlXmlExportResult)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_AfterXmlExport"

End Sub

Workbook.AfterXmlImport

ワークブックに接続されたXMLデータが更新されたか、新しいXMLデータのインポートが実行されたことをきっかけにするイベントです。
※XMLデータとはHTMLなどと同じくマークアップ言語で構成されたデータのことです。HTMLはウェブサイトのコンテンツ(テキストや画像)の表示をするために利用されるものですが、XMLはシステム間のデータのやり取りに利用されるものです。

引数 必須/省略可 データの型(タイプ) 備考
Map 必須 XmlMap データの保存またはエクスポートに使用されたスキーママップ
IsRefresh 必須 ブーリアン型(Boolean) True:Xmlデータへの既存の接続を更新されてイベントが発生した場合。
False:新しい接続が作成されてイベントが発生した場合。
Result 必須 XlXmlImportResult 保存またはエクスポート操作の結果を示します。
0:正常に成功
1:XMLデータファイルの容量が大きすぎてデータが切り捨てられた
2:失敗
Private Sub Workbook_After
XmlImport(ByVal Map As XmlMap, ByVal IsRefresh As Boolean, ByVal Result As XlXmlImportResult)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_AfterXmlImport"

End Sub

Workbook.BeforeClose

ワークブック(ファイル)を閉じる(終了する)を実行することをきっかけにするイベントです。

引数 必須/省略可 データの型(タイプ) 備考
Cancel 必須 ブーリアン型
(Boolean)
イベントが発生するとFalseが代入されます。
プロシージャなどでTrueが設定されるとブックを閉じる動作は実行されません。
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_BeforeClose"

End Sub

Workbook.BeforePrint

ワークブック(ファイル)の中に含まれる内容の印刷の実行をきっかけにするイベントです。

引数 必須/省略可 データの型(タイプ) 備考
Cancel 必須 ブーリアン型
(Boolean)
イベントが発生するとFalseが代入されます。
プロシージャなどでTrueが設定されると印刷する動作は実行されません。
Private Sub Workbook_BeforePrint(Cancel As Boolean)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_BeforePrint"

End Sub

Workbook.BeforeRemoteChange

サーバー上で共有しているワークブックなどで、ユーザーの編集部分の取り込みの実行をきっかけにするイベントです。

Private Sub Workbook_BeforeRemoteChange()

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_BeforeRemoteChange"

End Sub

Workbook.BeforeSave

ワークブック(ファイル)の保存が実行されたことをきっかけにするイベントです。類似するイベントの”Workbook_AfterSave”は正常に保存されたことをきっかけにするものですが、こちらはワークブックの保存前に発生します。

ただし、保存操作により実行されたプロシージャのなかで引数であるCanselにTrueが代入された場合はプロシージャの処理がおわってもワークブックは保存されません。

引数 必須/省略可 データの型(タイプ) 備考
SaveAsUI 必須 ブーリアン型
(Boolean)
ブックに保存する必要がある変更がある場合は、Trueとなり[名前を付けて保存]が表示されます。
Cancel 必須 ブーリアン型
(Boolean)
イベントが発生するとFalseが代入されます。
プロシージャなどでTrueが設定されるとブックの保存動作は実行されません。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_BeforeSave"
    'Cancel = True

End Sub

※コメントアウトしている部分を非コメントアウトにするとブックは保存されなくなります。

Workbook.BeforeXmlExport

ワークブック(ファイル)に接続されたXMLデータが更新されたか、新しいXMLデータのインポートが実行されたことをきっかけにするイベントです。

類似するイベントの”Workbook_AfterXmlExport”は保存かエクスポートが実行されたことをきっかけにするものですが、こちらは保存かエクスポートの事前に発生します。

引数 必須/省略可 データの型(タイプ) 備考
Map 必須 XmlMap データの保存またはインポートに使用されるXMLマップ。
Url 必須 ストリング型
(String)
XMLファイルのインポート先となる場所を指定します。
Cancel 必須 ブーリアン型
(Boolean)
Trueが設定されると保存またはエクスポート操作が取り消されます。
Private Sub Workbook_BeforeXmlExport(ByVal Map As XmlMap, ByVal Url As String, Cancel As Boolean)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_BeforeXmlExport"

End Sub

Workbook.BeforeXmlImport

ワークブック(ファイル)に接続されたXMLデータが更新されたか、新しいXMLデータのインポートが実行されたことをきっかけにするイベントです。

類似するイベントの”Workbook_AfterXmlImport”は更新かインポートが実行されたことをきっかけにするものですが、こちらは更新かインポートの事前に発生します。

引数 必須/省略可 データの型(タイプ) 備考
Map 必須 XmlMap インポートに使用されるXMLマップ。
Url 必須 ストリング型
(String)
XMLファイルのインポート先となる場所を指定します。
IsRefresh 必須 ブーリアン型
(Boolean)
True:既存の接続が更新された場合
False:他のデータソースからインポートを行ったことによってイベントが発生した場合
Cancel 必須 ブーリアン型
(Boolean)
Trueが設定されると更新またはインポート操作が取り消されます。
Private Sub Workbook_BeforeXmlImport(ByVal Map As XmlMap, ByVal Url As String, ByVal IsRefresh As Boolean, Cancel As Boolean)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_BeforeXmlImport"

End Sub

Workbook.Deactivate

ワークブック(ファイル)が非アクティブになったことをきっかけにするイベントです。例えば複数のワークブックが開かれている場合、ウィンドウを別のワークブックに切り替えた場合などに発生します。

Private Sub Workbook_Deactivate()

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_Deactivate"

End Sub

Workbook.ModelChange

ワークブック(ファイル)に紐づけたエクセルデータモデルの変更が発生したことをきっかけにするイベントです。

引数 必須/省略可 データの型(タイプ) 備考
ModelChanges 必須 ModelChanges WorkbookオブジェクトのModelChangeイベントがモデル操作の後に発生した場合、データモデルに対して行われた変更情報が含まれます。
Private Sub Workbook_ModelChange(ByVal Changes As ModelChanges)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_ModelChange"

End Sub

Workbook.NewChart

ワークブック(ファイル)のシートにグラフの挿入やグラフシートを追加したことをきっかけにするイベントです。新しいグラフが挿入される、貼り付けられた場合にイベントが発生します。

引数 必須/省略可 データの型(タイプ) 備考
Ch 必須 Chart 新しいグラフがオブジェクトとして代入されます。
Private Sub Workbook_NewChart(ByVal Ch As Chart)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_NewChart"

End Sub

Workbook.NewSheet

ワークブック(ファイル)に新しいシートを追加したことをきっかけにするイベントです。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
新しいシートが代入されます。
WorksheetオブジェクトまたはChartオブジェクトを指定できます。
Private Sub Workbook_NewSheet(ByVal Sh As Object)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_NewSheet"

End Sub

Workbook.Open

ワークブック(ファイル)を開いたことをきっかけにするイベントです。

Private Sub Workbook_Open()

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_Open"

End Sub

Workbook.PivotTableCloseConnection

ピボットテーブルに接続したデータソースが閉じられたこときっかけにするイベントです。データソースの更新でも発生します。

引数 必須/省略可 データの型(タイプ) 備考
Target 必須 PivotTable 選択されているピボットテーブルが代入されます。
Private Sub Workbook_PivotTableCloseConnection(ByVal Target As PivotTable)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_PivotTableCloseConnection"

End Sub

Workbook.PivotTableOpenConnection

ピボットテーブルに接続したデータソースが開かれたこときっかけにするイベントです。データソースの更新でも発生します。

引数 必須/省略可 データの型(タイプ) 備考
Target 必須 PivotTable 選択されているピボットテーブルが代入されます。
Private Sub Workbook_PivotTableOpenConnection(ByVal Target As PivotTable)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_PivotTableOpenConnection"

End Sub

Workbook.RowsetComplete

OLAP(オーラップ)ピボットテーブルで行のグループ化や詳細表示の実行をきっかけにするイベントです。

※OLAPピボットテーブルはOLAPデータソースから取得したデータを分析することができる機能です。通常のピボットテーブルとは異なり、より高度で多数の観点でデータを見ることができます。

引数 必須/省略可 データの型(タイプ) 備考
Description 必須 ストリング型
(String)
イベントの簡単な説明です。
Sheet 必須 ストリング型
(String)
レコードセットが作成されるワークシートです。
Success 必須 ブーリアン型
(Boolean)
成功または失敗を示すブール値が含まれます。
Private Sub Workbook_RowsetComplete(ByVal Description As String, ByVal Sheet As String, ByVal Success As Boolean)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_RowsetComplete"

End Sub

Workbook.SheetActivate

ワークブック(ファイル)に含まれるシートがアクティブになったことをきっかけにするイベントです。Sheet1からSheet2に切り替えるなどの操作で発生します。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
アクティブになったシートが代入されます。
WorksheetオブジェクトかChartオブジェクトを指定できます。
Private Sub Workbook_SheetActivate(ByVal Sh As Object)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_SheetActivate"

End Sub

Workbook.SheetBeforeDelete

ワークブック(ファイル)に含まれるシートが削除されたことをきっかけにするイベントです。Beforeと書かれているため、まぎらわしいですがユーザー操作としては削除を実行したあと、シートの削除が完了するまえに発生します。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
削除対象のシートが代入されます。
WorksheetオブジェクトかChartオブジェクトを指定できます。
Private Sub Workbook_SheetBeforeDelete(ByVal Sh As Object)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "SheetBeforeDelete"

End Sub

Workbook.SheetBeforeDoubleClick

ワークブック(ファイル)に含まれるシートでマウスのダブルクリック操作が実行されたことをきっかけにするイベントです。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
Worksheetオブジェクトが代入されます。
Target 必須 Range ダブルクリック時にマウスポインターに最も近いセルが代入されます。
Cancel 必須 ブーリアン型
(Boolean)
イベント発生時にFalseが代入されます。
プロシージャでこの引数をTrueに設定するとダブルクリックの操作は実行されません。
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

    MsgBox "イベントによりマクロが起動しました。" & vbCrLf & _
    Sh.Name & "の" & Target.Address & "セルがダブルクリックされました。", vbOKOnly, "SheetBeforeDoubleClick"

End Sub

Workbook.SheetBeforeRightClick

ワークブック(ファイル)に含まれるシートでマウスの右クリック操作が実行されたことをきっかけにするイベントです。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
Worksheetオブジェクトが代入されます。
Target 必須 Range 右クリック時にマウスポインターに最も近いセルが代入されます。
Cancel 必須 ブーリアン型
(Boolean)
イベント発生時にFalseが代入されます。
プロシージャでこの引数をTrueに設定すると右クリックの操作は実行されません。
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

    MsgBox "イベントによりマクロが起動しました。" & vbCrLf & _
    Sh.Name & "の" & Target.Address & "セルで右クリックされました。", vbOKOnly, "Workbook_SheetBeforeRightClick"

End Sub

Workbook.SheetCalculate

ワークブック(ファイル)に含まれるシートで再計算が実行されることをきっかけにするイベントです。エクセルの計算方法の設定が「自動」の場合はセルを編集する度に実行されます。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
再計算されるシートが代入されます。
WorksheetオブジェクトまたはChartオブジェクトを指定できます。
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)

    MsgBox "イベントによりマクロが起動しました。" & vbCrLf & _
    Sh.Name & " で再計算が実行されました。", vbOKOnly, "Workbook_SheetCalculate"

End Sub

Workbook.SheetChange

ワークブック(ファイル)に含まれるワークシートのセルの変更がされたことをきっかけにするイベントです。具体的なきっかけに値の入力や更新、削除などの操作が当てはまります。文字の大きさや書体の変更、背景や文字色の変更、配置の変更などでは発生しません。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
Worksheetが代入されます。
Target 必須 Range 変更された範囲が代入されます。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    MsgBox "イベントによりマクロが起動しました。" & vbCrLf & _
    Sh.Name & "の" & Target.Address & "セルが変更されました。", vbOKOnly, "Workbook_SheetChange"

End Sub

このイベントはグラフシートでは発生しないことに注意だよ。

Workbook.SheetChangeを利用したサンプルマクロはこちらの以下の記事でも紹介しています。イベントとの相性の良い機能を実装することで、ユーザー(使用者)の作業を補助し、貢献度や品質の高いものが作れます。

Workbook.SheetDeactivate

ワークブック(ファイル)に含まれるシートが非アクティブになったことをきっかけにするイベントです。具体的として、Sheet1からSheet2に切り替える操作をすると、Sheet1が非アクティブになりこちらのイベントが発生します。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
非アクティブになったシートが代入されます。
WorksheetオブジェクトかChartオブジェクトを指定できます。
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_SheetDeactivate"

End Sub

Workbook.SheetFollowHyperlink

ワークブック(ファイル)の含まれるハイパーリンクが選択されたことをきっかけにするイベントです。
例えば、セルA1の配置されているハイパーリンクをクリックし、ほかのセルにジャンプすると実行されます。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
ハイパーリンクがあるWorksheetオブジェクト。
Target 必須 Hyperlink ハイパーリンクの遷移先をあらわすHyperlinkオブジェクト。
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)

    MsgBox "イベントによりマクロが起動しました。" & vbCrLf & _
    Sh.Name & " のハイパーリンクの選択により" & Target.SubAddress & " セルに移動しました。", vbOKOnly, "Workbook_SheetFollowHyperlink"

End Sub

Workbook.SheetLensGalleryRenderComplete

ワークブック(ファイル)に含まれるデータテーブル(表)を選択し、ギャラリーのアイコンの配置が完了したことをきっかけにするイベントです。

具体例の1つにワークシートにある表にふくまれるセルで、右クリックをしたときに表示されるメニューから「クイック分析」を選択したときに発生します。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
Worksheetオブジェクトが代入されます。
Private Sub Workbook_SheetLensGalleryRenderComplete(ByVal Sh As Object)

    MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_SheetLensGalleryRenderComplete"

End Sub

クイック分析はデータの分析ができるExcelの便利な機能だよ。

Workbook.SheetPivotTableAfterValueChange

ワークブック(ファイル)に含まれるピボットテーブルのセルやセル範囲が編集または再計算されたことをきっかけにするイベントです。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
ピボットテーブルを含むWorksheetオブジェクトが代入されます。
TargetPivotTable 必須 PivotTable 編集または再計算したセルが含まれるピボットテーブルが代入されます。
TargetRange 必須 Range 編集または再計算したすべてのセル範囲。
Private Sub Workbook_SheetPivotTableAfterValueChange(ByVal Sh As Object, ByVal TargetPivotTable As PivotTable, ByVal TargetRange As Range)

MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_SheetPivotTableAfterValueChange"

End Sub

Workbook.SheetPivotTableBeforeAllocateChanges

ワークブック(ファイル)に含まれるピボットテーブルの変更されたことをきっかけにするイベントです。変更がピボットテーブルに適用される前に発生します。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
ピボットテーブルを含むWorksheetオブジェクトが代入されます。
TargetPivotTable 必須 PivotTable 編集または再計算したセルが含まれるピボットテーブルが代入されます。
ValueChangeStart 必須 Long 最初の変更内容の番号
PivotTableChangeListコレクションのValueChangeオブジェクトのOrderプロパティで指定されます。
ValueChangeEnd 必須 Long 最後の変更内容の番号
PivotTableChangeListコレクションのValueChangeオブジェクトのOrderプロパティで指定されます。
Cancel 必須 ブーリアン型
(Boolean)
False:イベントが発生します。プロシージャなどでTrueが設定されるとピボットテーブルの更新動作は実行されません(変更内容は失われます)。
Private Sub Workbook_SheetPivotTableBeforeAllocateChanges(ByVal Sh As Object, ByVal TargetPivotTable As PivotTable, ByVal ValueChangeStart As Long, ByVal ValueChangeEnd As Long, Cancel As Boolean)

MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_SheetPivotTableBeforeAllocateChanges"

End Sub

Workbook.SheetPivotTableBeforeCommitChanges

ワークブック(ファイル)に含まれるOLAP(オーラップ)ピボットテーブルOLAPのデータソースに変更を適用することの選択をきっかけにするイベントです。

※OLAPピボットテーブルはOLAPデータソースから取得したデータを分析することができる機能です。通常のピボットテーブルとは異なり、より高度で多数の観点でデータを見ることができます。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
ピボットテーブルを含むWorksheetオブジェクトが代入されます。
TargetPivotTable 必須 PivotTable 確定していない変更が含まれているピボットテーブルが代入されます。
ValueChangeStart 必須 Long 最初の変更内容の番号
PivotTableChangeListコレクションのValueChangeオブジェクトのOrderプロパティで指定されます。
ValueChangeEnd 必須 Long 最後の変更内容の番号
PivotTableChangeListコレクションのValueChangeオブジェクトのOrderプロパティで指定されます。
Cancel 必須 ブーリアン型
(Boolean)
False:イベントが発生します。プロシージャなどでTrueが設定されるとピボットテーブルのOLAPデータソースへの変更は確定されません。
Private Sub Workbook_SheetPivotTableBeforeCommitChanges(ByVal Sh As Object, ByVal TargetPivotTable As PivotTable, ByVal ValueChangeStart As Long, ByVal ValueChangeEnd As Long, Cancel As Boolean)

MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_SheetPivotTableBeforeAllocateChanges"

End Sub

OLAP(Online Analytical Processing)は集めたたくさんのデータを分析する技術だよ。

Workbook.SheetPivotTableBeforeDiscardChanges

ワークブック(ファイル)に含まれるOLAP(オーラップ)ピボットテーブルOLAPのデータソースに変更を破棄する(巻き戻す)ことの選択をきっかけにするイベントです。

※OLAPピボットテーブルはOLAPデータソースから取得したデータを分析することができる機能です。通常のピボットテーブルとは異なり、より高度で多数の観点でデータを見ることができます。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
巻き戻す変更があるピボットテーブルを含むWorksheetオブジェクトが代入されます。
TargetPivotTable 必須 PivotTable 巻き戻す変更があるピボットテーブルが代入されます。
ValueChangeStart 必須 Long 最初の変更内容の番号
PivotTableChangeListコレクションのValueChangeオブジェクトのOrderプロパティで指定されます。
ValueChangeEnd 必須 Long 最後の変更内容の番号
PivotTableChangeListコレクションのValueChangeオブジェクトのOrderプロパティで指定されます。
Private Sub Workbook_SheetPivotTableBeforeDiscardChanges(ByVal Sh As Object, ByVal TargetPivotTable As PivotTable, ByVal ValueChangeStart As Long, ByVal ValueChangeEnd As Long)

MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_SheetPivotTableBeforeDiscardChanges"

End Sub

Workbook.SheetPivotTableChangeSync

ワークブック(ファイル)に含まれるピボットテーブルを変更されたことをきっかけにするイベントです。
※ピボットテーブルの「更新」でもマクロが起動しますが「Workbook_SheetPivotTableUpdate」とどちらも設定している場合は先にこちらが発生します。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
ピボットテーブルを含むWorksheetオブジェクトが代入されます。
Target 必須 PivotTable 変更されたピボットテーブルが代入されます。
Private Sub Workbook_SheetPivotTableChangeSync(ByVal Sh As Object, ByVal Target As PivotTable)

MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_SheetPivotTableChangeSync"

End Sub

Workbook.SheetPivotTableUpdate

ワークブック(ファイル)に含まれるピボットテーブルを更新することをきっかけにするイベントです。「Workbook_SheetPivotTableChangeSync」イベントとどちらも設定されている場合は、こちらが後に発生します。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
選択されているWorksheetオブジェクトが代入されます。
Target 必須 PivotTable 選択されているピボットテーブルのレポートが代入されます。
Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)

MsgBox "イベントによりマクロが起動しました。", vbOKOnly, "Workbook_SheetPivotTableUpdate"

End Sub

Workbook.SheetSelectionChange

ワークブック(ファイル)に含まれるワークシートでセルの選択範囲を変更したことをきっかけにするイベントです。選択するセルが1つでも複数でもイベントは発生します。選択エリアがグラフシート上にあるときはイベントが発生しません。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
新しい選択範囲のあるWorksheetオブジェクトが代入されます。
Target 必須 Range 新しい選択範囲が代入されます。
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

MsgBox "イベントによりマクロが起動しました。" & vbCrLf & Sh.Name & Target.Address, vbOKOnly, "Workbook_SheetSelectionChange"

End Sub

Workbook.SheetTableUpdate

ワークブック(ファイル)に含まれるシートのテーブルが更新されたことをきっかけに発生するイベントです。

引数 必須/省略可 データの型(タイプ) 備考
Sh 必須 オブジェクト型
(Object)
選択されているWorksheetオブジェクトが代入されます。
Target 必須 PivotTable 選択されているピボットテーブルのレポートが代入されます。
Private Sub Workbook_SheetTableUpdate(ByVal Sh As Object, ByVal Target As TableObject) 

MsgBox "イベントによりマクロが起動しました。" & vbCrLf & Sh.Name & Target.Name, vbOKOnly, "Workbook_SheetTableUpdate"

End Sub

Workbook.Sync

こちらは現在は使われていないものとなります。過去のバージョンとの互換性のために残っていますが、マイクロソフトの案内にも注意書きがあるように使用は控えましょう。

Workbook.WindowActivate

ワークブック(ファイル)がアクティブになったことをきっかけに発生するイベントです。具体例の1つとして、ワークブックが複数開かれているときにイベントプロシージャを指定したブックのウィンドウがアクティブになると発生します。

引数 必須/省略可 データの型(タイプ) 備考
Wn 必須 Window アクティブになったウィンドウが代入されます。
Private Sub Workbook_WindowActivate(ByVal Wn As Window)

MsgBox "イベントによりマクロが起動しました。" & vbCrLf & Wn.Application, vbOKOnly, "Workbook_WindowActivate"

End Sub

Workbook.WindowDeactivate

ワークブック(ファイル)が非アクティブになったことをきっかけに発生するイベントです。具体例の1つとして、ワークブックが複数開かれているときにイベントプロシージャを指定したブックのウィンドウが非アクティブになると発生します。

引数 必須/省略可 データの型(タイプ) 備考
Wn 必須 Window 非アクティブになったウィンドウが代入されます。
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)

MsgBox "イベントによりマクロが起動しました。" & vbCrLf & Wn.Application, vbOKOnly, "Workbook_WindowDeactivate"

End Sub

Workbook.WindowResize

ワークブック(ファイル)のウィンドウのサイズが変更されたことをきっかけに発生するイベントです。最大化・最小化などのウィンドウサイズの切り替えが実行されると発生します。

引数 必須/省略可 データの型(タイプ) 備考
Wn 必須 Window サイズを変更したウィンドウが代入されます。
Private Sub Workbook_WindowResize(ByVal Wn As Window)

MsgBox "イベントによりマクロが起動しました。" & vbCrLf & "ウィンドウの幅は " & Wn.Width, vbOKOnly, "Workbook_WindowResize"

End Sub

ワークブックイベントまとめ

この記事では、エクセルVBAのワークブックイベントを紹介しました。

ワークブックイベントはプロシージャ(マクロ)を動かすきっかけです。このきっかけは使用頻度の多そうなものから、場面がレアなものまで豊富な種類がそろっています。

これらのイベントを上手に利用することで使用者が意識的にマクロを動かさなくても動作してくれるため、使用者の作業を手助けするありがたい機能を作ることもできます。

そのほかのイベントについて

エクセルVBAのイベントはこちらの記事で紹介したもの以外にも、下記のようなものがあります。

ワークシートイベント

 ワークシートによる特定の操作が実行されたときに発生するイベントプロシージャです。

準備したボタンをクリックする

 ワークシート上などに設置したボタンをクリックすることでプロシージャを動かします。

マクロ(機能)との相性が良いイベントを指定できればメリットが大きいね。

コダマのもりブログはにほんブログ村に登録しています。
ブログの記事が役に立ったと感じて頂けたら、フォローお願いいたします。

コメント