Möglicherweise möchten Sie Ihr Makro- / VBA-Snippet ausführen, wenn eine bestimmte Arbeitsmappe ausgewählt ist. Ein Blatt in der Arbeitsmappe ist ausgewählt, die Zelle ändert ihren Wert, wenn ein Doppelklick erfolgt, wenn ein Blatt hinzugefügt wird usw. In all diesen Fällen verwenden wir Arbeitsmappen-Ereignishandler. Der Event Handler hilft uns, VBA-Code auszuführen, wenn ein bestimmtes Ereignis auftritt.

In diesem Artikel werden wir kurz auf jeden Workbook Event Handler eingehen.

Was ist ein Workbook Event Handler? Ein Arbeitsmappen-Ereignishandler ist eine Unterroutine, die lokal für eine Arbeitsmappe ist.

Dieser Code funktioniert nur für die Komponenten einer Arbeitsmappe. Das ist die Arbeitsmappe selbst, es sind Blätter und Bereiche.

Wo schreibe ich Workbook Event Handler Code?

Die Arbeitsmappenereignisse werden nur in das Arbeitsmappenobjekt geschrieben. Wenn Sie ein Arbeitsmappenereignis in einem normalen Modul schreiben, tritt kein Fehler auf, aber es funktioniert einfach nicht.

In das Arbeitsmappenobjekt schreiben. Doppelklicken Sie darauf oder klicken Sie mit der rechten Maustaste und klicken Sie auf den Ansichtscode. Der Code-Schreibbereich wird angezeigt.

Wie schreibe ich Code für ein bestimmtes Ereignis in die Arbeitsmappe?

Wenn Sie sich jetzt im Bearbeitungsmodus befinden, wird im Dropdown-Menü in der oberen linken Ecke allgemein angezeigt. Klicken Sie auf das Dropdown-Menü und wählen Sie die Arbeitsmappe aus. In der Dropdown-Liste oben rechts werden alle Ereignisse angezeigt. Wählen Sie aus, was Sie benötigen, und ein Skelettcode für dieses Ereignis wird für Sie geschrieben.

Jedes Ereignis hat einen festen Prozedurnamen. Dies sind die reservierten Unterprogrammnamen, die mit workbook_ beginnen. Sie können sie nicht für andere Unterprogramme verwenden (Sie können, aber es handelt sich um normale Unterprogramme).

Wichtig: Jedes Unterprogramm aus dieser Liste wird für das angegebene Ereignis ausgeführt.

_Eine Art von Arbeitsmappenereignisprozedur kann nur einmal in eine Arbeitsmappe geschrieben werden. Wenn Sie zwei gleiche Ereignisbehandlungsprozeduren in eine Arbeitsmappe schreiben, führt dies zu einem Fehler und keine davon wird ausgeführt.

Natürlich wird der Fehler mehrdeutige Unterprogramme sein._

Lassen Sie uns kurz über jedes der Ereignisse lernen.

  1. Das Ereignis Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) Dieses Ereignis wird ausgelöst, wenn Änderungen an enthaltenen Arbeitsblättern vorgenommen werden (Formatierung ausgeschlossen). Wenn Sie etwas tun möchten, wenn Änderungen an einem Blatt vorgenommen wurden, lautet der Code:

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

'do something

Msgbox "done something"

End Sub

Das „Sh“ ist immer das aktive Blatt. Das „Ziel“ ist immer die aktive Zelle.

Ein weiteres Beispiel: Möglicherweise möchten Sie Datum und Uhrzeit in Cel, Prl B1, eingeben, wenn sich A1 ändert. In diesem Fall verwenden wir das Ereignis workbook_sheetchange. Der Code würde folgendermaßen aussehen:

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

If Target.Address = "$A$1" Then

Range("B1").Value2 = Format(Now(), "hh:mm:ss")

End If

End Sub

Dies zielt nur auf die Zelle A1 auf jedem Blatt ab, da wir das „sh“ -Objekt nicht angegeben haben.

  1. Das Ereignis Workbook_Activate () Dieses Ereignis wird ausgelöst, wenn der Ereigniscode mit der Arbeitsmappe aktiviert wird. Der Skelettcode für dieses Ereignis lautet:

Private Sub Workbook_Activate()

End Sub

Ein einfaches Beispiel zeigt den Arbeitsmappennamen, wenn er ausgewählt wird.

Private Sub Workbook_Activate()

MsgBox "You are on workbook " & Activeworkbook.Name

End Sub

Sobald Sie zu der Arbeitsmappe gelangen, die diesen Code enthält, wird das Ereignis ausgeführt und die Meldung „Sie haben den Namen der Arbeitsmappe“ angezeigt (Blatt 2 ist in meinem Fall).

  1. Das Workbook_Open () -Ereignis Dies ist eine der am häufigsten gestellten Fragen zum Ausführen eines Makros, sobald die Arbeitsmappe geöffnet wird. Das ist die Antwort. Dieses Arbeitsmappenereignis wird ausgeführt, sobald die Arbeitsmappe geöffnet wird. Im Gegensatz zu Workbook_Activate () wird dieser Code nur einmal ausgeführt, nicht jedes Mal, wenn er aktiviert wird.

Private Sub Workbook_Open()

'your code

'

End Sub

Das folgende Beispiel für ein Workbook_Open-Ereignis zeigt einfach eine Willkommensnachricht an, wenn Sie den Code mit der Arbeitsmappe öffnen.

Private Sub Workbook_Open()

MsgBox "Welcome to the Master File"

End Sub
  1. Das Ereignis Workbook_Deactivate () Dieses Ereignis wird ausgelöst, wenn der Code mit der Arbeitsmappe verlassen wird. Mit anderen Worten, wenn Sie beim Wechseln der Arbeitsmappe etwas tun möchten, z. B. Blätter ausblenden oder etwas anderes, verwenden Sie dieses VBA-Ereignis. Die Syntax lautet:

Private Sub Workbook_Deactivate()

'your code

'

End Sub

Das folgende Beispielereignis Workbook_Deativate zeigt einfach eine Meldung an, dass Sie das Hauptblatt verlassen haben, wenn Sie dieses Blatt verlassen.

Private Sub Workbook_Deactivate()

MsgBox "You Left The Master Sheet"

End Sub
  1. Das Workbook_BeforeClose () -Ereignis Dieses Ereignis wird ausgelöst, wenn Sie das Löschen des VBA-Ereignisses mit Blatt bestätigen. Die Syntax ist einfach:

Private Sub Workbook_BeforeClose(Cancel as Boolean)

End Sub

Das Abbrechen kann auf true gesetzt werden, wenn Sie die Arbeitsmappe geöffnet lassen möchten.

Mit dem folgenden Code werden Sie gefragt, ob Sie den Inhalt der Arbeitsmappe zum Schließen speichern möchten.

Private Sub Workbook_BeforeClose(Cancel as Boolean)

ans = MsgBox("Do you want to save the content of this workbook?", vbYesNo)

If ans = True Then

thisworkbook.save

End If

End Sub
  1. Das Ereignis Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Dieses Ereignis wird ausgelöst, bevor die Arbeitsmappe gespeichert wird. Die Syntax ist einfach:

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

End Sub

SaveAsUI wird auf True gesetzt, wenn sich die Arbeitsmappe ändert (nicht in VBA).

Das Abbrechen kann auf true gesetzt werden, wenn die Arbeitsmappe nicht gespeichert werden soll.

Mit dem folgenden Code werden Sie gefragt, ob Sie den Inhalt der zu speichernden Arbeitsmappe speichern möchten.

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

ans = MsgBox("Do you really want to save the content of this workbook?", vbYesNo)

If ans = False Then

Cancel = True

End If

End Sub
  1. Das Ereignis Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) Dieses Ereignis wird ausgelöst, bevor die Arbeitsmappe gespeichert wird. Die Syntax ist einfach:

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

End Sub

SaveAsUI wird auf True gesetzt, wenn sich die Arbeitsmappe ändert (nicht in VBA).

Das Abbrechen kann auf true gesetzt werden, wenn die Arbeitsmappe nicht gespeichert werden soll.

Mit dem folgenden Code werden Sie gefragt, ob Sie den Inhalt der zu speichernden Arbeitsmappe speichern möchten.

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

ans = MsgBox("Do you really want to save the content of this workbook?", vbYesNo)

If ans = False Then

Cancel = True

End If

End Sub
  1. Das Ereignis Workbook_NewSheet (ByVal Sh As Object) Dieses Ereignis wird ausgelöst, wenn Sie der Arbeitsmappe ein neues Blatt hinzufügen. Die Syntax ist einfach:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

End Sub

Das Sh ist das Blattobjekt. Der Typ ist eigentlich ein Kernobjekt. Wenn wir also ein Diagrammblatt, ein Makroblatt oder ein Dialogblatt hinzufügen, funktioniert das Ereignis weiterhin.

Der folgende Code fügt den Namen des neu hinzugefügten Blattes hinzu und zeigt ihn an.

Private Sub Workbook_NewSheet(ByVal Sh As Object)

MsgBox "You added a new sheet. " & Sh.Name

End Sub

Es gibt viele weitere Ereignisse des Arbeitsmappenobjekts. Wir können hier nicht alle diskutieren. Wenn Sie etwas über ein bestimmtes Ereignis erfahren möchten, fragen Sie im Kommentarbereich unten nach. Ich hoffe, ich konnte die Grundlagen der Arbeitsmappenereignisse in diesem Artikel erläutern. Lassen Sie mich im Kommentarbereich unten wissen, ob es Ihnen geholfen hat.

Verwandte Artikel:

link: / tips-using-worksheet-change-event-to-run-macro, wenn eine Änderung vorgenommen wird [Verwenden des Arbeitsblatt-Änderungsereignisses zum Ausführen eines Makros, wenn eine Änderung vorgenommen wird] | Um Ihr Makro bei jeder Aktualisierung des Arbeitsblatts auszuführen, verwenden wir die Arbeitsblattereignisse von VBA.

link: / events-in-vba-run-macro-if-any-change-made-on-sheet-range [Makro ausführen, wenn Änderungen am Blatt im angegebenen Bereich vorgenommen wurden] | Verwenden Sie diesen VBA-Code, um Ihren Makrocode auszuführen, wenn sich der Wert in einem angegebenen Bereich ändert. Es erkennt alle Änderungen, die im angegebenen Bereich vorgenommen wurden, und löst das Ereignis aus.

link: / events-in-vba-einfachster-vba-code zum hervorheben der aktuellen zeile und spalte mit [Einfachster VBA-Code zum Hervorheben der aktuellen Zeile und Spalte mit] | Verwenden Sie dieses kleine VBA-Snippet, um die aktuelle Zeile und Spalte des Blattes hervorzuheben.

Beliebte Artikel:

link: / Tastatur-Formel-Verknüpfungen-50-Excel-Verknüpfungen-zur-Steigerung-Ihrer-Produktivität [50 Excel-Verknüpfungen zur Steigerung Ihrer Produktivität] | Werden Sie schneller bei Ihrer Aufgabe. Diese 50 Verknüpfungen beschleunigen Ihre Arbeit in Excel noch schneller.

link: / formeln-und-funktionen-einführung-der-vlookup-funktion [Die VLOOKUP-Funktion in Excel] | Dies ist eine der am häufigsten verwendeten und beliebtesten Funktionen von Excel, mit der Werte aus verschiedenen Bereichen und Tabellen gesucht werden. link: / tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] | Zählen Sie Werte mit Bedingungen, die diese erstaunliche Funktion verwenden. Sie müssen Ihre Daten nicht filtern, um einen bestimmten Wert zu zählen.

Die Countif-Funktion ist wichtig, um Ihr Dashboard vorzubereiten.

link: / excel-formel-und-funktion-excel-sumif-funktion [Verwendung der SUMIF-Funktion in Excel] | Dies ist eine weitere wichtige Funktion des Dashboards. Auf diese Weise können Sie Werte unter bestimmten Bedingungen zusammenfassen.