VBA コードのトリガー (スイッチ) となるワークブック イベント (開く、閉じるなど) を設定できます。
ワークブックが開いたら指示に従うには、ThisWorkbook に移動し、Workbook を選択します。
Workbook_Open イベントはデフォルトで追加され、ワークブックが開かれたときに発生します。
Private Sub Workbook_Open() End Sub
たとえば、次の命令を追加すると、ワークブックを開いたときにダイアログ ボックスが表示されます。
Private Sub Workbook_Open() MsgBox "Welcome" End Sub
ワークブックを閉じる前に指示を実行するには、BeforeClose を選択します。
Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub
変数「Cancel」を True に設定すると、ブックを閉じることをキャンセルできます。
以下は、ユーザーにワークブックを閉じるための確認を求める例です。
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'ユーザーが NO で応答した場合、変数 Cancel の値は TRUE になります (ブックを閉じることをキャンセルします)。 If MsgBox("Do you really want to close this workbook ?", 36, "I confirm") = vbNo Then Cancel = True End If End Sub
このイベントは、ワークブックが保存される直前に発生します。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub
ファイルの保存は、変数「Cancel」を True に設定することでキャンセルできます。
このイベントは、ワークブックが印刷される前に発生します。
Private Sub Workbook_BeforePrint(Cancel As Boolean) End Sub
変数「Cancel」を True に設定すると、ファイルの印刷をキャンセルできます。
このイベントは、ワークブックを保存した直後に発生します。
Private Sub Workbook_AfterSave(ByVal Success As Boolean) End Sub
このイベントは、ワークブック内のワークシートを切り替えるたびに発生します。
Private Sub Workbook_SheetActivate(ByVal Sh As Object) End Sub
この例では、アクティブなシートの名前がダイアログ ボックスに表示されます。
Private Sub Workbook_SheetActivate(ByVal Sh As Object) MsgBox "Name of Sheet : " & Sh.Name End Sub
このイベントは、ワークシートのセルがダブルクリックされると発生します。
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) End Sub
たとえば、このイベントを使用して、選択したシートに応じてセルの塗りつぶしの色を追加できます。
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) If Sh.Name = "Sheet1" Then Target.Interior.Color = RGB(255, 108, 0) 'オレンジ色 Else Target.Interior.Color = RGB(136, 255, 0) '緑色 End If End Sub
このイベントは、マウスの右クリック自体の前に発生します。
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) End Sub
このイベントは、ワークシートの内容が変更されるたびに発生します。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) End Sub
このイベントは、ワークシート内のデータが計算または再計算されるたびに発生します。
Private Sub Workbook_SheetCalculate(ByVal Sh As Object) End Sub
このイベントは、スプレッドシート内の選択したセル範囲の内容が変更されるたびに発生します。
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) End Sub
この例では、セル A1 が空の場合、塗りつぶしの色が変わります。
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Range("A1") = "" Then Target.Interior.Color = RGB(124, 255, 255) '青色 End If End Sub
このイベントは、新しいシートがワークブックに追加されるたびに発生します。
Private Sub Workbook_NewSheet(ByVal Sh As Object) End Sub
このイベントは、リンク (ハイパーテキスト) がクリックされたときに発生します。
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) End Sub