Wir können Arbeitsmappenereignisse (wie Öffnen, Schließen usw.) haben, die Auslöser (Schalter) für VBA-Code sein können.
Um den Anweisungen beim Öffnen der Arbeitsmappe zu folgen, gehen Sie zu „DieseArbeitsmappe“ und wählen Sie „Workbook“ aus:
Das Workbook_Open-Ereignis wird standardmäßig hinzugefügt und ausgelöst, wenn die Arbeitsmappe geöffnet wird:
Private Sub Workbook_Open() End Sub
Wenn wir beispielsweise die folgende Anweisung hinzufügen, wird das Dialogfeld angezeigt, wenn die Arbeitsmappe geöffnet wird:
Private Sub Workbook_Open() MsgBox "Welcome" End Sub
Um die Anweisungen vor dem Schließen der Arbeitsmappe auszuführen, wählen Sie BeforeClose aus:
Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub
Das Schließen der Arbeitsmappe kann abgebrochen werden, indem die Variable „Cancel“ auf True gesetzt wird.
Unten sehen Sie ein Beispiel, in dem der Benutzer um eine Bestätigung zum Schließen der Arbeitsmappe gebeten wird:
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Wenn der Benutzer mit NO antwortet, hat die Variable Cancel den Wert TRUE (wodurch das Schließen der Arbeitsmappe abgebrochen wird). If MsgBox("Do you really want to close this workbook ?", 36, "I confirm") = vbNo Then Cancel = True End If End Sub
Dieses Ereignis tritt unmittelbar vor dem Speichern der Arbeitsmappe ein:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub
Das Speichern einer Datei kann abgebrochen werden, indem die Variable „Cancel“ auf True gesetzt wird.
Dieses Ereignis tritt ein, bevor die Arbeitsmappe gedruckt wird:
Private Sub Workbook_BeforePrint(Cancel As Boolean) End Sub
Das Drucken der Datei kann abgebrochen werden, indem die Variable „Cancel“ auf True gesetzt wird.
Dieses Ereignis tritt unmittelbar nach dem Speichern der Arbeitsmappe ein:
Private Sub Workbook_AfterSave(ByVal Success As Boolean) End Sub
Dieses Ereignis tritt jedes Mal auf, wenn Sie zwischen Arbeitsblättern in einer Arbeitsmappe wechseln:
Private Sub Workbook_SheetActivate(ByVal Sh As Object) End Sub
In diesem Beispiel wird der Name des aktiven Blattes im Dialogfeld angezeigt:
Private Sub Workbook_SheetActivate(ByVal Sh As Object) MsgBox "Name of Sheet : " & Sh.Name End Sub
Dieses Ereignis tritt auf, wenn auf eine Arbeitsblattzelle doppelgeklickt wird:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) End Sub
Mit diesem Ereignis können wir beispielsweise je nach ausgewähltem Blatt eine Zellenfüllfarbe hinzufügen:
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) 'orange Farbe Else Target.Interior.Color = RGB(136, 255, 0) 'Grüne Farbe End If End Sub
Dieses Ereignis tritt ein, bevor der rechte Mausklick erfolgt:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) End Sub
Dieses Ereignis tritt immer dann ein, wenn sich der Inhalt des Arbeitsblatts ändert:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) End Sub
Dieses Ereignis tritt immer dann auf, wenn Daten in einem Arbeitsblatt berechnet oder neu berechnet werden:
Private Sub Workbook_SheetCalculate(ByVal Sh As Object) End Sub
Dieses Ereignis tritt immer dann ein, wenn sich der Inhalt des ausgewählten Zellbereichs in der Tabelle ändert:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) End Sub
In diesem Beispiel ändert sich die Füllfarbe, wenn Zelle A1 leer ist:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Range("A1") = "" Then Target.Interior.Color = RGB(124, 255, 255) 'Blaue Farbe End If End Sub
Dieses Ereignis tritt immer dann auf, wenn der Arbeitsmappe ein neues Blatt hinzugefügt wird:
Private Sub Workbook_NewSheet(ByVal Sh As Object) End Sub
Dieses Ereignis tritt auf, wenn auf einen Link (Hypertext) geklickt wird:
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) End Sub