エクセル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 | あり | なし |
ワークブックのイベントの指定方法
VBEのプロジェクトエクスプローラーでワークブックモジュールを選択し、ワークブックのプロシージャ作成画面を開きます。ワークブックモジュールは特に変更などしていない場合、オブジェクト名が「ThisWorkbook」となっています。
もし、お使いの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のイベントはこちらの記事で紹介したもの以外にも、下記のようなものがあります。
ワークシートイベント
ワークシートによる特定の操作が実行されたときに発生するイベントプロシージャです。
準備したボタンをクリックする
ワークシート上などに設置したボタンをクリックすることでプロシージャを動かします。
マクロ(機能)との相性が良いイベントを指定できればメリットが大きいね。
コダマのもりブログはにほんブログ村に登録しています。
ブログの記事が役に立ったと感じて頂けたら、フォローお願いいたします。
コメント