Vielleicht möchten Sie Ihr Makro/VBA-Snippet ausführen, wenn eine Zelle ihren Wert ändert, wenn ein Doppelklick passiert, wenn ein Blatt ausgewählt wird usw. In all diesen Fällen verwenden wir Worksheet Event Handler. Der Event Handler hilft uns, VBA-Code auszuführen, wenn ein bestimmtes Ereignis eintritt.
In diesem Artikel werden wir kurz über jeden Worksheet Event Handler lernen.
Was ist ein Worksheet-Ereignishandler?
Ein Arbeitsblatt-Ereignishandler ist eine Unterroutine, die sich lokal in einem Arbeitsblattmodul befindet.
Wo schreibe ich Arbeitsblatt-Ereignishandlercode?
Die Arbeitsblattereignisse werden nur in Blattobjekte geschrieben. Wenn Sie ein Arbeitsblattereignis in einem Modul oder Klassenmodul schreiben, wird kein Fehler ausgegeben, aber es funktioniert einfach nicht.
In das Blattobjekt schreiben. Doppelklicken Sie darauf oder klicken Sie mit der rechten Maustaste und klicken Sie auf Code anzeigen. Der Code-Schreibbereich wird angezeigt.
Wie schreibe ich Code für ein bestimmtes Ereignis auf dem Arbeitsblatt?
Wenn Sie sich nun im Bearbeitungsmodus befinden, sehen Sie im Dropdown-Menü in der oberen linken Ecke Allgemeines. Klicken Sie auf das Dropdown-Menü und wählen Sie das Arbeitsblatt aus. Jetzt werden in der Dropdown-Liste in der oberen rechten Ecke alle Ereignisse angezeigt. Wählen Sie aus, was Sie brauchen, und ein Skelettcode für dieses Ereignis wird für Sie geschrieben.
Jedes Ereignis hat einen festen Prozedurnamen. Dies sind die reservierten Unterprogrammnamen. Sie können sie nicht für andere Unterprogramme auf einem Blatt verwenden. In einem Modul arbeiten sie als normales Unterprogramm.
Wichtig: Jedes Unterprogramm aus dieser Liste wird bei dem angegebenen Ereignis ausgeführt.
Eine Art von Arbeitsblatt-Ereignisprozedur kann nur einmal auf ein Blatt geschrieben werden. Wenn Sie zwei gleiche Ereignisbehandlungsprozeduren auf ein Blatt 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. DieWorksheet_Change (ByVal Target As Range)Vorfall
Dieses Ereignis wird ausgelöst, wenn wir Änderungen an den enthaltenen Arbeitsblättern vornehmen (Formatierung ausgeschlossen). Wenn Sie etwas tun möchten, wenn das gesamte Blatt geändert wurde, lautet der Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'etwas tun Msgbox "etwas erledigt" End Sub
Das "Ziel" ist immer die aktive Zelle.
Ein weiteres Beispiel: Sie können Datum und Uhrzeit in Zelle B1 eingeben, wenn sich A1 ändert. In diesem Fall verwenden wir das Ereignis worksheet_change. Der Code würde so aussehen:
Private Sub Worksheet_Change(ByVal Target As Range) If Ziel.Adresse = "$A$1" Then Range("B1").Value2 = Format(Now(), "hh:mm:ss") End If End Sub
Dies zielt nur auf die Zelle A1 ab.
Wenn Sie auf einen Bereich abzielen möchten, verwenden Sie das folgende Beispiel:
Makro ausführen, wenn eine Änderung am Blatt im angegebenen Bereich vorgenommen wurde
2. DieWorksheet_SelectionChange(ByVal Target As Range)Vorfall
Wie der Name schon sagt, wird dieses Ereignis ausgelöst, wenn sich die Auswahl ändert. Mit anderen Worten, wenn sich Ihr Cursor in Zelle A1 befindet und in eine andere Zelle verschoben wird, wird der Code in dieser Unterroutine ausgeführt.
Der folgende Code ändert die Farbe der aktiven Zellen, wenn sie sich ändert und wenn es sich um eine gerade Zeile handelt.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row Mod 2 = 0 Then Target.Interior.ColorIndex = 22 End If End Sub
Immer wenn sich mein Cursor auf eine gerade Reihe bewegt, wird er farbig. Ungerade Zeilenzellen werden verschont.
Ein weiteres Beispiel für das Worksheet_SelectionChange-Ereignis:
Einfachster VBA-Code zum Hervorheben der aktuellen Zeile und Spalte mit
3. Die Arbeitsblatt_Activate() Vorfall
Dieses Ereignis wird ausgelöst, wenn das Ereigniscode enthaltende Blatt aktiviert wird. Der Skelettcode für dieses Ereignis lautet:
Private Sub Worksheet_Activate() End Sub
Ein einfaches Beispiel ist die Anzeige des Blattnamens, wenn es ausgewählt wird.
Private Sub Worksheet_Activate() MsgBox "Sie sind auf " & ActiveSheet.Name End Sub
Sobald Sie auf das Blatt gelangen, das diesen Code enthält, wird das Ereignis ausgeführt und die Meldung "Sie befinden sich auf dem Blattnamen" angezeigt (in meinem Fall ist Blatt2).
4. Die Arbeitsblatt_Deaktivieren() Vorfall
Dieses Ereignis wird beim Verlassen des Code enthaltenden Blatts ausgelöst. Mit anderen Worten, wenn Sie etwas tun möchten, z. B. Zeilen ausblenden oder etwas anderes, wenn Sie das Blatt verlassen, verwenden Sie dieses VBA-Ereignis. Die Syntax lautet:
Private Sub Worksheet_Deactivate() 'Ihr Code' End Sub
Das folgende Beispiel-Worksheet_Deativate-Ereignis wird einfach eine Nachricht anzeigen, dass Sie das Master-Blatt verlassen haben, wenn Sie dieses Blatt verlassen.
Private Sub Worksheet_Deactivate() MsgBox "Sie haben das Master-Blatt verlassen" End Sub
5. Die Arbeitsblatt_BeforeDelete()Vorfall
Dieses Ereignis wird ausgelöst, wenn Sie das Löschen des VBA-Ereignis enthaltenden Blatts bestätigen. Die Syntax ist einfach:
Private Sub Worksheet_BeforeDelete() End Sub
Im folgenden Code werden Sie gefragt, ob Sie den Inhalt des zu löschenden Blatts kopieren möchten.
Private Sub Worksheet_BeforeDelete() ans = MsgBox("Möchten Sie den Inhalt dieses Blattes in ein neues Blatt kopieren?", vbYesNo) If ans = True Then 'Code zum Kopieren von End If End Sub
6. Die Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Vorfall
Dieses Ereignis wird ausgelöst, wenn Sie auf die Zielzelle doppelklicken. Die Syntax dieses VBA-Arbeitsblattereignisses lautet:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) End Sub
Wenn Sie die Zielzelle oder den Zielbereich nicht festlegen, wird es bei jedem Doppelklick auf das Blatt ausgelöst.
Die Cancel-Variable ist eine boolesche Variable. Wenn Sie es auf True setzen, wird die Standardaktion nicht ausgeführt. Das heißt, wenn Sie auf die Zelle doppelklicken, wird sie nicht in den Bearbeitungsmodus versetzt.
Mit dem folgenden Code wird die Zelle mit einer Farbe gefüllt, wenn Sie auf eine beliebige Zelle doppelklicken.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Interior.ColorIndex = 7 End Sub
Der folgende Code zielt auf die Zelle A1 ab. Wenn es bereits mit der angegebenen Farbe gefüllt ist, verschwindet die Farbe. Es ist ähnlich wie ein Like-Button oder ein Kontrollkästchen.
Privates Abo Arbeitsblatt_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$A$1" Then Cancel = True If Target.Interior.ColorIndex = 4 Then Target.Interior.ColorIndex = xlColorIndexNone Sonst Target.Interior.ColorIndex = 4 End If Ende, wenn Ende Unter
7. Die Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Vorfall
Dieses Ereignis wird ausgelöst, wenn Sie mit der rechten Maustaste auf die Zielzelle klicken. Die Syntax dieses VBA-Arbeitsblattereignisses lautet:
Privates Abo Arbeitsblatt_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True ' 'Ihr Code ' End Sub
Der folgende Code füllt die Zelle mit dem Wert 1, wenn Sie mit der rechten Maustaste darauf klicken. Die standardmäßigen Rechtsklickoptionen werden nicht angezeigt, da wir den Operator "Abbrechen" auf "True" gesetzt haben.
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Target.Value = 1 End Sub
8. Die Arbeitsblatt_Berechnen() Vorfall
Wenn Sie möchten, dass etwas passiert, wenn ein Excel ein Blatt berechnet, verwenden Sie dieses Ereignis. Es wird immer dann ausgelöst, wenn Excel ein Blatt berechnet. Die Syntax ist einfach:
Private Sub Worksheet_Calculate() ' 'Ihr Code ' End Sub
6. Die Worksheet_FollowHyperlink(ByVal-Ziel als Hyperlink)Vorfall
Dieses Verfahren wird ausgeführt, wenn Sie auf einen Hyperlink auf dem Blatt klicken. Die grundlegende Syntax dieses Ereignishandlers lautet:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) ' 'Ihr Code ' End Sub
Sie können den Ziel-Hyperlink bei Bedarf festlegen. Wenn Sie den Ziel-Hyperlink nicht festlegen, wird er ausgeführt, wenn Sie auf einen Hyperlink im Code-enthaltenden Blatt klicken.
Also ja, Leute, dies waren einige grundlegende Arbeitsblattereignisse, die praktisch sein werden, wenn Sie sie kennen. Nachfolgend finden Sie einige verwandte Artikel, die Sie vielleicht gerne lesen möchten.
Wenn Sie Zweifel an diesem Artikel oder einem anderen Artikel zu Excel / VBA haben, teilen Sie uns dies im Kommentarbereich unten mit.
Verwenden des Arbeitsblattänderungsereignisses zum Ausführen eines Makros, wenn eine Änderung vorgenommen wird| Um Ihr Makro bei jeder Blattaktualisierung auszuführen, verwenden wir die Arbeitsblattereignisse von VBA.
Makro ausführen, wenn eine Änderung am Blatt im angegebenen Bereich vorgenommen wurde| Verwenden Sie diesen VBA-Code, um Ihren Makrocode auszuführen, wenn sich der Wert in einem angegebenen Bereich ändert. Es erkennt jede Änderung im angegebenen Bereich und löst das Ereignis aus.
Einfachster VBA-Code zum Hervorheben der aktuellen Zeile und Spalte mit | Verwenden Sie dieses kleine VBA-Snippet, um die aktuelle Zeile und Spalte des Blatts hervorzuheben.
Populäre Artikel:
50 Excel-Kurzbefehle zur Steigerung Ihrer Produktivität | Werden Sie schneller bei Ihrer Aufgabe. Diese 50 Tastenkombinationen machen Ihre Arbeit in Excel noch schneller.
Die SVERWEIS-Funktion in Excel | Dies ist eine der am häufigsten verwendeten und beliebtesten Funktionen von Excel, die verwendet wird, um Werte aus verschiedenen Bereichen und Blättern zu suchen.
ZÄHLENWENN in Excel 2016 | Zählen Sie Werte mit Bedingungen mit dieser erstaunlichen Funktion. Sie müssen Ihre Daten nicht filtern, um einen bestimmten Wert zu zählen. Die Countif-Funktion ist unerlässlich, um Ihr Dashboard vorzubereiten.
So verwenden Sie die SUMIF-Funktion in Excel | Dies ist eine weitere wesentliche Funktion des Dashboards. Dies hilft Ihnen, Werte unter bestimmten Bedingungen zusammenzufassen.