TOP

VBA-レッスン 11.1。ワークブック イベント (Workbook イベント)

VBA コードのトリガー (スイッチ) となるワークブック イベント (開く、閉じるなど) を設定できます。


Workbook_Open (ブックを開く)

ワークブックが開いたら指示に従うには、ThisWorkbook に移動し、Workbook を選択します。

Workbook_Open イベントはデフォルトで追加され、ワー​​クブックが開かれたときに発生します。

Private Sub Workbook_Open()

End Sub

たとえば、次の命令を追加すると、ワークブックを開いたときにダイアログ ボックスが表示されます。

Private Sub Workbook_Open()
     MsgBox "Welcome"
End Sub

Workbook_BeforeClose (ワークブックを閉じる前のイベント)

ワークブックを閉じる前に指示を実行するには、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

Workbook_BeforeSave (ワークブックを保存する前のイベント)

このイベントは、ワークブックが保存される直前に発生します。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub

ファイルの保存は、変数「Cancel」を True に設定することでキャンセルできます。

Workbook_BeforePrint (ブックの印刷前のイベント)

このイベントは、ワークブックが印刷される前に発生します。

Private Sub Workbook_BeforePrint(Cancel As Boolean)

End Sub

変数「Cancel」を True に設定すると、ファイルの印刷をキャンセルできます。

Workbook_AfterSave (ワークブック保存後のイベント)

このイベントは、ワークブックを保存した直後に発生します。

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

End Sub

Workbook_SheetActivate (ワークシート切り替えイベント)

このイベントは、ワークブック内のワークシートを切り替えるたびに発生します。

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

Workbook_SheetBeforeDoubleClick (セルのダブルクリック イベント)

このイベントは、ワークシートのセルがダブルクリックされると発生します。

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

Workbook_SheetBeforeRightClick (右クリック前のイベント)

このイベントは、マウスの右クリック自体の前に発生します。

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

Workbook_SheetChange (シート内容変更イベント)

このイベントは、ワークシートの内容が変更されるたびに発生します。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

Workbook_SheetCalculate (SheetCalculate イベント)

このイベントは、ワークシート内のデータが計算または再計算されるたびに発生します。

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)

End Sub

Workbook_SheetSelectionChange (選択セル範囲変更イベント)

このイベントは、スプレッドシート内の選択したセル範囲の内容が変更されるたびに発生します。

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

Workbook_NewSheet (新規シート追加イベント)

このイベントは、新しいシートがワークブックに追加されるたびに発生します。

Private Sub Workbook_NewSheet(ByVal Sh As Object)

End Sub

Workbook_SheetFollowHyperlink (リンククリックイベント)

このイベントは、リンク (ハイパーテキスト) がクリックされたときに発生します。

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)

End Sub