Im Allgemeinen sind die Ereignisse nichts anderes, als dass etwas passiert. In Excel ist es genauso. Aber manchmal möchten wir, dass etwas automatisch passiert, wenn ein bestimmtes Ereignis eintritt. Um etwas zu tun, wenn ein bestimmtes Ereignis in Excel auftritt, verwenden wir das Excel VBA-Ereignis.
Excel VBA-Ereignishandler: Typen
Es gibt hauptsächlich 7 Arten von Ereignishandlern in Excel VBA.
- Anwendungsereignisse
- Arbeitsmappen-Ereignisse
- Arbeitsblatt-Ereignisse
- Diagrammereignisse
- Benutzerformularereignisse
- Tastenkombinationsereignisse (Tastenkombinationsereignisse)
- Pünktliche Ereignisse
Lassen Sie uns sie nacheinander erkunden.
Anwendungsereignisse in Excel
Die Ereignisse auf Anwendungsebene werden ausgelöst, wenn die Anwendung (Excel) geschlossen, geöffnet, aktiviert, geschützt, ungeschützt usw.
Auf Anwendungsebene gibt es mehr als 50 Arten von Ereignissen. Daher können wir hier nicht alle diskutieren.
Umfang der Bewerbungsveranstaltung:
Diese Ereignisse funktionieren für alle Arbeitsmappen von Excel, solange der Code mit der Arbeitsmappe geöffnet ist. Wenn Sie beispielsweise ein Ereignis auf Anwendungsebene erstellt haben, das Ihnen den Blattnamen des aktiven Blatts mitteilt, wird es bei jeder Blattaktivierung einer beliebigen Arbeitsmappe ausgelöst.
Wie erstelle ich einen Anwendungsereignishandler in VBA?
Die Erstellung von Anwendungsereignissen ist etwas knifflig. Ich habe es hier ausführlich mit Beispiel erklärt.
Arbeitsmappenereignisse in Excel
Umfang der Arbeitsmappenveranstaltung
Die Arbeitsmappenereignisse wirken sich auf die gesamte Arbeitsmappe aus, die den Code enthält. Das Ereignis kann Arbeitsmappe öffnen, schließen, aktivieren, deaktivieren, Blattwechsel usw.
Wo schreibe ich Workbook-Ereignisse?
Die Arbeitsmappenereignisse werden in das Arbeitsmappenobjekt geschrieben.
Wie schreibe ich eine Arbeitsmappenveranstaltung?
Folge diesen Schritten:
1. Doppelklicken Sie im Projektexplorer auf das Arbeitsmappenobjekt. Der Code-Schreibbereich wird angezeigt. Alle arbeitsmappenbezogenen Ereignisse werden hier geschrieben.
2. Oben links im Code-Schreibbereich sehen Sie ein Dropdown-Menü. Klicken Sie auf das Dropdown-Menü und wählen Sie die Arbeitsmappe aus. Standardmäßig ist es allgemein.
3. Sobald Sie die Arbeitsmappe aus der linken Dropdown-Liste auswählen, wird standardmäßig eine workbook_open-Ereignisunterroutine eingefügt. Wenn Sie jedoch eine andere Ereignisunterroutine verwenden möchten, wählen Sie diese aus der Dropdown-Liste oben rechts aus. Es werden alle verfügbaren Arbeitsmappenereignisse aufgelistet.
4. Wählen Sie die gewünschte Veranstaltung aus. Für das Beispiel wähle ich das SheetActivate-Ereignis. Dieses Ereignis wird bei jeder Auswahl des Blatts in der Code enthaltenden Arbeitsmappe ausgelöst.
Beispiel für ein Arbeitsmappenereignis:Dies ist ein einfaches Beispiel. Ich möchte nur den Namen des aktivierten Arbeitsblatts anzeigen. Dafür verwende ich einfach das SheetActivate Event im Workbook-Objekt.
Privates Abo Workbook_SheetActivate(ByVal Sh als Objekt) MsgBox Sh.Name & "aktiviert" End Sub
Wenn nun ein neues Blatt in dieser Arbeitsmappe aktiviert wird, wird dieses Ereignis ausgelöst. Sie werden mit der Massage, dem aktivierten Blattnamen, aufgefordert.
Ich weiß, dass dieser Code nicht so nützlich ist, aber Sie können beliebige Anweisungen zwischen diesen Zeilen einfügen. Sie können die Funktionen und Unterprogramme aus den Modulen selbst aufrufen.
Arbeitsblattereignisse in Excel
Alle bereichs- und zellbezogenen Ereignisse werden in die Arbeitsblattereignisse geschrieben. Informationen zu den Arbeitsblatt-Ereignissen finden Sie hier.
Der Umfang des Arbeitsblatt-Events
Die Arbeitsblattereignisse sind auf die Bereiche und Zellen eines bestimmten Arbeitsblatts ausgerichtet. Ein Arbeitsblattereignis wird bei Ereignissen ausgelöst, die auf dem bestimmten Arbeitsblatt (dem Arbeitsblatt, das den Code enthält) auftreten.
Wo werden die Arbeitsblattereignisse geschrieben?
Die Arbeitsblattereignisse werden in das Arbeitsblattobjekt geschrieben.
Wie schreibe ich einen Code für die Verarbeitung von Arbeitsblattereignissen?
Es ist dasselbe wie bei den Arbeitsmappenereignissen.
1. Doppelklicken Sie im Projektexplorer auf das Arbeitsblattobjekt. Der Code-Schreibbereich wird für das Arbeitsblatt angezeigt. Alle arbeitsblattbezogenen Ereignisse werden in diese Arbeitsblätter geschrieben.
2. Oben links im Code-Schreibbereich sehen Sie ein Dropdown-Menü. Klicken Sie auf das Dropdown-Menü und wählen Sie das Arbeitsblatt aus. Standardmäßig ist es allgemein.
3. Sobald Sie das Arbeitsblatt aus der linken Dropdown-Liste auswählen, wird standardmäßig eine worksheet_selectionChange-Ereignisunterroutine eingefügt. Wenn Sie jedoch eine andere Ereignisunterroutine verwenden möchten, wählen Sie diese aus der Dropdown-Liste oben rechts aus. Es listet alle verfügbaren Arbeitsblattereignisse auf.
4. Wählen Sie die gewünschte Veranstaltung aus. Für das Beispiel wähle ich das Ereignis Worksheet_SelectionChange(ByVal Target As Range). Dieses Ereignis wird bei jeder Änderung der Auswahl eines Bereichs auf dem Blatt ausgelöst.
Beispiel für ein Arbeitsblattereignis
Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox "Sie befinden sich in " & Target.Address End Sub
Das obige Ereignis wird in Blatt1 einer Arbeitsmappe geschrieben. Dieses Ereignis zeigt die Bereichsadresse an, die Sie auf dem Code-enthaltenden Blatt ausgewählt haben, wenn Sie die Bereichsauswahl ändern. Im Folgenden finden Sie einige weitere Beispiele für Arbeitsblattereignisse.
Die Arbeitsblattereignisse werden hauptsächlich in dynamischen Dashboards verwendet. Sie können Zellen als Kontrollkästchen oder aktive Auswahl verwenden, um Ihre Dashboards dynamisch zu gestalten.
Im Folgenden finden Sie einige weitere Beispiele für Arbeitsblattereignisse.
Verwenden des Arbeitsblattänderungsereignisses zum Ausführen eines Makros, wenn eine Änderung vorgenommen wird
Makro ausführen, wenn eine Änderung am Blatt im angegebenen Bereich vorgenommen wurde
Einfachster VBA-Code zum Hervorheben der aktuellen Zeile und Spalte mit
Die Chart-Ereignisse
Es gibt zwei Arten von Diagrammereignissen in Excel. Eine davon sind die normalerweise eingebetteten Diagramme, die wir hier ausführlich besprochen haben. Es ist ähnlich wie bei Ereignissen auf Anwendungsebene.
Ein anderer ist das Chart-Blatt. Dies sind die speziellen Blätter, die nur die Diagramme enthalten, die mit Daten auf einigen anderen Blättern verbunden sind.
Wenn es um Veranstaltungen geht, sind sie wie normale Blätter.
Wo schreibe ich Chart-Ereignisse?
Die Diagrammereignisse werden in das Diagrammobjekt geschrieben. Doppelklicken Sie einfach auf das Diagrammblatt, um den Codebereich zu öffnen.
Wie schreibe ich Diagrammereignisse?
Folge diesen Schritten:
1. Doppelklicken Sie im Projektexplorer auf das Diagrammblattobjekt, um den Codebereich zu öffnen. Alle spezifischen Ereignisse im Zusammenhang mit Diagrammblättern werden hier geschrieben.
2. In der oberen rechten Ecke des Codebereichs sehen Sie das übliche Dropdown-Menü. Wählen Sie das Diagramm aus dieser Dropdown-Liste aus.
3. Wählen Sie in der rechten Ecke das gewünschte Ereignis aus.
Wenn ich beispielsweise etwas tun möchte, sobald der Benutzer das Diagramm auswählt, verwende ich das Ereignis Chart_Activate.
Beispiel: Chart-Blatt-Ereignis
Private Sub Chart_Activate() MsgBox "Das Diagramm wird aktualisiert" End Sub
Der obige Code wird ausgelöst, sobald Sie das Diagrammblatt auswählen. Hier wird nur die Meldung angezeigt, dass das Diagramm aktualisiert wurde, aber Sie können viel tun. So können Sie den Datenbereich für das Diagramm dynamisch auswählen, bevor Sie diese Meldung anzeigen.
Nachfolgend finden Sie einige weitere Beispiele für Chart-Ereignisse:
Die UserForm-Ereignisse
Das Benutzerformularereignis ist wie andere Ereignisse. Es gibt mehrere Ereignisse, die im Benutzerformular auftreten. Sie können diese Ereignisse verwenden, um die Ereignisse auszulösen.
Wo schreibe ich die Benutzerformularereignisse?
Um ein Benutzerformularereignis zu schreiben, müssen Sie zuerst eine UserForm einfügen.
1. Klicken Sie dann mit der rechten Maustaste auf die UserForm und klicken Sie auf den Ansichtscode. Nun öffnet sich der Codebereich.
2. Wählen Sie nun oben links das Benutzerformular aus.
3. Wählen Sie in der linken Dropdown-Liste das Ereignis aus, das Sie zum Auslösen der Codeausführung verwenden möchten.
4. Schreiben Sie den gewünschten Code zwischen den Codeereigniscode.
Das folgende Beispiel zeigt lediglich die Meldung, wenn ein Benutzerformular aktiviert wird.
Private Sub UserForm_Activate() MsgBox "Hallo, bitte überprüfen Sie Ihre Informationen." End Sub
Der obige Code zeigt nur eine Nachricht an, aber Sie können dieses Ereignis verwenden, um das Formular mit einigen Standardeingaben vorab auszufüllen oder Blattinformationen zum Ausfüllen zu verwenden.
Das Onkey-Event
Diese Ereignisse werden ausgelöst, wenn eine bestimmte Taste oder Tastenkombination gedrückt wird. Es ist so, als würden Sie Ihre Verknüpfungen erstellen.
Das OnKey-Ereignis ist eigentlich eine Funktion oder Methode der Application-Klasse, die zwei Argumente hat, wie unten gezeigt:
Anwendung.onkey Schlüssel, ["Verfahren"]
Die Schlüssel ist die Taste oder Tastenkombination, die Sie als Auslöser verwenden möchten.
"Verfahren" ist ein optionales Argument, das ein Zeichenfolgenname der Prozedur oder des Makros ist, das Sie auslösen möchten. Wenn Sie die Prozedur nicht definieren, wird die aktuelle Prozedur ausgelöst.
Wo schreibe ich die Onkey-Events?
Nun, Sie können das Onkey-Ereignis auf jedes normale Modul schreiben. Sie funktionieren in normalen Modulen, aber zuerst müssen Sie die Unterroutine ausführen, die die Onkey-Anweisungen enthält. Es ist nicht so, dass Sie das Makro jedes Mal ausgeführt haben, um die Onkey-Ereignisse zu verwenden. Nur einmal müssen Sie dieses Makro ausführen, wenn Sie die Arbeitsmappe öffnen.
Wenn Sie das Makro, das die Onkey-Ereignisse enthält, nicht ausführen möchten, können Sie sie in das Ereignis workbook_open() im Arbeitsmappenobjekt einfügen. Dadurch werden die Onkey-Ereignisse aktiviert, sobald Sie die Arbeitsmappe öffnen, die die Onkey-Ereignisse enthält.
Wie schreibe ich einen Onkey Event-Handler?
Wenn Sie also bereits über einige Makros verfügen, die Sie mit einer angegebenen Verknüpfung ausführen möchten, schreiben Sie eine neue Prozedur, die die Liste der Verknüpfungen enthält. Zum Beispiel habe ich hier ein Makro, das die Meldung anzeigt, dass die Verknüpfung funktioniert.
Sub show_msg() MsgBox "Die Verknüpfung funktioniert" End Sub
Jetzt möchte ich dieses Makro ausführen, während ich die Tastenkombination STRG+j drücke. Dazu schreibe ich den folgenden VBA-Code.
Sub Activate_Onkey() Application.OnKey "^j", "show_msg" End Sub
"^" (Karat) steht für die STRG-Taste. Unten ist die Tabelle für alle wichtigen Abkürzungen in Excel VBA.
https://docs.microsoft.com/en-us/office/vba/api/excel.application.onkey
Wie aktiviere ich das Onkey-Ereignis?
Nachdem Sie den obigen Code in ein Modul geschrieben haben, wenn Sie in die Excel-Ansicht wechseln und die STRG + J-Taste verwenden, funktioniert es nicht. Zuerst müssen Sie das Sub ausführen, das die OnKey-Ereignisse definiert. Führen Sie also einmal das Activate_Onkey()-Sub aus und dann funktioniert es für die gesamte Sitzung. Sobald Sie die Arbeitsmappe schließen, die die Onkey-Definitionen enthält, funktioniert sie nicht mehr.
Sie können die Onkey-Definitionen in die gewünschte Prozedur einfügen. Aber dann müssen Sie das Makro einmal manuell ausführen. Aus diesem Grund schlage ich vor, die Onkey-Ereignisse in die Workbook_Open-Ereignisse einzufügen. Dadurch werden alle Onkey-Ereignisse automatisch aktiviert.
Das Ontime-Event in Excel
Wie der Name schon sagt, feuert das Onkey-Ereignis die angegebene Unterroutine am oder nach dem frühestmöglichen angegebenen Zeitpunkt. Excel ist möglicherweise mit einigen anderen Aufgaben beschäftigt, z. In diesem Fall kann es das Ereignis Ontime verzögern. Deshalb wird das Argument als frühester Zeitpunkt angegeben.
Syntax des OnTime-Ereignisses
Das Ontime-Ereignis ist eine Funktion der Application-Klasse. Es hat zwei wesentliche Argumente und zwei optionale Argumente.
Application.Ontime EarlyiestTime, "Procedure",[LatestTime], [Plan]
DieFrühester Zeitpunktist der Zeitpunkt, zu dem Ihr Verfahren ausgeführt werden soll. Excel führt das angegebene Makro jedoch erst nach dem definierten frühesten Zeitpunkt aus, wenn es frei ist.
Die "Verfahren" ist der Name der Prozedur, die Sie zum angegebenen Zeitpunkt ausführen möchten.
Wie gesagt, es gibt keine Garantie, dass Excel Ihr Verfahren zum angegebenen Zeitpunkt ausführt. Die Letzte Zeitist die Zeit nach der frühesten Zeit, um Excel ein Fenster zu geben, um frei zu sein und Ihre Aufgabe auszuführen.
Wenn Sie Ihr geplantes OnTime-Ereignis deaktivieren möchten, setzen Siezeitlicher Ablauf zu falsch.
Wo soll man das Ontime Event schreiben?
Das Ereignis OnTime kann in jedes beliebige Modul geschrieben werden. Sie müssen das Ereignis ausführen, das die Prozedur enthält, um das Ereignis zu aktivieren.
Wenn Ihr Ereignis aktiviert werden soll, sobald Sie die Arbeitsmappe öffnen, die das Ereignis enthält, fügen Sie es in das Ereignis workbook_open ein. Es aktiviert das Ereignis, sobald Sie den Code mit dem Ereignis in Excel öffnen.
Wie schreibe ich das Ontime-Event?
Nehmen wir an, Sie haben eine Subroutine, die das aktuelle Datum und die aktuelle Uhrzeit anzeigt
Sub show_msg() MsgBox "Das aktuelle Datum und die aktuelle Uhrzeit sind " & Now End Sub
Wenn Sie nun möchten, dass diese Prozedur nach 5 Sekunden der Ausführung eines anderen Makros ausgeführt wird, müssen Sie diesen Code einfügen.
Sub OnTimeTest() '--einige andere Aufgaben Application.ontime Now + (5 / 24 / 60 / 60), "show_msg" End Sub
Sobald Sie die Unterroutine OnTimeTest ausführen, löst sie nach fünf Sekunden ihrer Ausführung die Unterroutine show_msg aus. Es ist also gut, wenn Sie nach ein paar Mal etwas anderes tun möchten, verwenden Sie die obige Struktur.
Wenn Sie möchten, dass Ihr Makro alle paar Sekunden/Minuten/Stunden/usw. selbst ausgeführt wird, können Sie diese Funktion selbst aufrufen. Es wäre eine Art rekursives Unterprogramm.
Sub OnTimeTest() MsgBox "Das aktuelle Datum und die aktuelle Uhrzeit sind " & Now Application.ontime Now + (5 / 24 / 60 / 60), "OnTimeTest" End Sub
Das obige Unterprogramm wird alle fünf Sekunden ausgeführt, sobald Sie es starten.
Also ja Leute, das sind die Ereignisse in Excel VBA. Einige der oben genannten Kategorien haben eine Vielzahl von Ereignisauslösern. Natürlich kann ich hier nicht alle erklären. Das macht einen langen Artikel aus einem Buch. Dies war nur eine Einführung in die in Excel VBA verfügbaren Ereignisse. Für weitere Informationen folgen Sie den in die Artikel eingebetteten Links. Ich habe einige verwandte Artikel unten erwähnt. Sie können sie auch lesen.
Wenn Sie Zweifel in Bezug auf diesen Artikel oder einen anderen Excel / VBA-Gedanken haben, fragen Sie uns im Kommentarbereich unten.
Die Arbeitsblattereignisse in Excel VBA|Das Arbeitsblattereignis ist sehr nützlich, wenn Sie möchten, dass Ihre Makros ausgeführt werden, wenn ein bestimmtes Ereignis auf dem Blatt auftritt.
Arbeitsmappenereignisse mit VBA in Microsoft Excel | Die Arbeitsmappenereignisse wirken sich auf die gesamte Arbeitsmappe aus. Da alle Blätter Teil der Arbeitsmappe sind, funktionieren diese Ereignisse auch auf ihnen.
Verhindern, dass ein automatisches Makro/Ereignismakro mit VBA in Microsoft Excel ausgeführt wird | Um die Ausführung des Makros auto_open zu verhindern, verwenden Sie die Umschalttaste.
Diagrammobjektereignisse mit VBA in Microsoft Excel | Die Diagramme sind komplexe Objekte und es gibt mehrere Komponenten, die Sie an sie angehängt haben. Um die Chart-Events zu erstellen, verwenden wir das Class-Modul.
Populäre Artikel:
50 Excel-Kurzbefehle zur Steigerung Ihrer Produktivität | Werden Sie schneller bei Ihrer Aufgabe. Mit diesen 50 Tastenkombinationen arbeiten Sie noch schneller mit Excel.
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.