Ereignisprozeduren in VBA sind eine spezielle Art an Prozeduren. Sie müssen nicht manuell aufgerufen werden, sondern werden automatisch ausgeführt, wenn ein bestimmtes Ereignis eintritt.
Dieser Beitrag soll eine solche Prozedur zeigen, wenn eine Arbeitsmappe geöffnet wird.
Wichtig ist zunächst zu wissen, wo die Prozedur untergebracht werden soll.
Wird sie in einem generellen Modul untergebracht, wird dies nicht zum gewünschten Ergebnis führen, das Ereignis wird nicht ausgeführt.
Eine neue Arbeitsmappe führt dazu, dass im VBA-Projekt das Modul „Diese Arbeitsmappe“ enthalten ist, die Abbildung zeigt das.
Daraus folgt, dass Ereignisse, die sich auf die Arbeitsmappe beziehen, im Modul „Diese Arbeitsmappe“ enthalten sind.
Dagegen sind Ereignisse, die sich auf eine Tabelle beziehen, im Modul des Tabellenblattes zu finden.
Wenn Du nun ein Ereignis für die Arbeitsmappe erstellen möchtest, klicke im Projektfenster doppelt auf „Diese Arbeitsmappe“.
Im VBA-Editor stehen nun zwei Kombinationsfelder zur Verfügung.
Wähle links „Workbook“ und rechts „Open“.
Sobald die Auswahl getroffen ist, stehen eine einleitende und eine abschließende Codezeile bereits zur Verfügung. Dazwischen kann nun der gewünschte Code eingetragen werden.
Als Beispiel könnte eine MsgBox angezeigt werden, die das aktuelle Datum ausgibt und eine zweite, die mitteilt, welche Arbeitsmappe geöffnet wurde.
Der vollständige Code lautet dazu:
Private Sub Workbook_Open()
Dim datHeute As Date
datHeute = Date()
MsgBox „Heute ist der “ & datHeute
MsgBox „Sie haben die Arbeitsmappe „““ & _
ThisWorkbook.Name & „““ geöffnet.“
End Sub
Füge die fehlenden Codezeilen in den VBA-Editor ein.
Beachte, dass zuerst die Variable „datHeute“ deklariert wird. Ihr wird der Wert „Date“ zugewiesen.
Mit der Date-Funktion wird das aktuelle Datum ausgewählt.
Dies war nur ein ganz einfaches Beispiel für eine Ereignisprozedur.
Noch ein kleines Beispiel. Du willst beim Öffnen der Arbeitsmappe nach Datumsanzeige und Anzeige des Arbeitsmappennamens die Summe eines Wertebereiches ausrechnen lassen.
Ergänze dazu das vorhandene Makro um zwei Zeilen.
Private Sub Workbook_Open()
Dim datHeute As Date
datHeute = Date()
MsgBox „Heute ist der “ & datHeute
MsgBox „Sie haben die Arbeitsmappe „““ & _
ThisWorkbook.Name & „““ geöffnet.“
Range(„B9“).Activate
ActiveCell.Formula = „=SUM(B3:B8)“
End Sub
Nach dem Öffnen der Arbeitsmappe wirst Du in Zelle B9 ein Ergebnis sehen.
Du siehst, es können alle möglichen Operationen mit einem „Workbook_Open“-Ereignis in Gang gesetzt werden, probiere es aus.
Entdecke mehr von Clevercalcul
Subscribe to get the latest posts sent to your email.