GoTo VBA-Befehl

Mittels dem VBA-Befehl "GoTo" kann in einen beliebigen Bereich des Codes gesprungen werden. Dieser Beitrag zeigt ein Beispiel auf, wie dies funktioniert.

An einer Stelle im Code erfolgt der Befehl "GoTo Zielbereich" und an einem beliebigen anderen Ort steht "Zielbereich:" gefolgt von den entsprechend auszuführenden Befehlen:

Sub MeinGoToMakro()
...
GoTo Zielbereich
...
Zielbereich:
Hier auszuführender Code
...
End Sub

Schauen wir uns ein konkretes Beispiel an: Angenommen das Programm soll zwei mögliche Prozeduren vornehmen - entweder die Befehle in Sektion1 oder diejenigen in Sektion2. Je nach dem, welcher Zelleninhalt in "B1" ist, soll Sektion1 oder Sektion2 ausgeführt werden. In diesem Fall wird das Programm einfach die entsprechende Sektion mit ".Select" auswählen. Meine Exceltabelle sieht wie folgt aus:

GoToSheet

Und der vollständige Code in VBA dazu lautet:

Sub GoToMacro()

If Range("B1") = 1 Then
Range("A5").Select
GoTo Ende
Else: GoTo Sektion2
End If

Sektion2:
Range("A9").Select

Ende:
End Sub

Es gibt zwei Aspekte, die ich genauer hervorheben möchte: Der Doppelpunkt hinter der jeweiligen Sektion ("Sektion2:" und "Ende:") ist zwingend notwendig. Zudem ist der Sprung zu eben diesem "Ende:" in unserem obigen Programm wichtig, damit die Befehle in Sektion2 im Falle von B1 = 1 gar nicht erst ausgeführt werden. Da ganze Teile im Code je nach Szenario übersprungen werden, wird die Ausführungszeit des Makros im Generellen beschleunigt.

Makro im Hintergrund abspielen (Application.ScreenUpdating)

Sobald ein Makro andere Tabellen öffnen und viele Befehle ausführen soll, eignet es sich, dieses im Hintergrund abzuspielen. Dadurch sieht der Benutzer nur das fertige Resultat, nicht jedoch die Einzelschritte im Schnelldurchlauf, was vorwiegend wie ein "Flackern" des Bildschirms aussieht. Um diese Hintergrundverarbeitung zu aktivieren, benötigt man lediglich zwei Codezeilen: Zu Beginn schaltet man die Sichtbarkeit aus [False], am Ende des Makros oder eines beliebigen Code-Abschnitts aktiviert man sie wieder [True]:

Sub MeinMakro()

Application.ScreenUpdating = False

...

...

Application.ScreenUpdating = True

End Sub

Dadurch, dass das Makro im Hintergrund verarbeitet wird und man die einzelnen Verarbeitungsschritte nicht sieht, ist das Programm grundsätzlich auch schneller fertig ausgeführt.

Tastenkombinationen in VBA

Tastenkombinationen zur Navigation in Excel haben wir bereits behandelt. Dieser Beitrag befasst sich nun ausschliesslich mit Tastatur-Kürzel in der Makro-Umgebung (VBA).

  • Den VBA-Editor öffnest Du ganz allgemein mittels Alt + F11 aus Excel (auch beispielsweise in Microsoft Word).
  • Während Du auf einer Code-Zeile einen Befehl eingibst, kannst Du diesen mittels CTRL + Leertaste vervollständigen. Als Beispiel: Appl wird als Application ausgeschrieben und vervollständigt. Du kannst Dir diese Methoden/Befehle auch via CTRL + J aufrufen, ein Wort tippen oder mit den Pfeiltasten suchen und mittels Enter oder Tabulator für Deinen Code verwenden.
  • Mittels F2 rufst Du den vollumfänglichen Objektkatalog auf, mit F7 gelangst Du wieder zu Deinem Code zurück.
  • Für die oben eingefügten Befehle und Objekte kannst Du mittels CTRL + I die Kurzinfo ("gelbe Beschreibung") wieder einblenden lassen.
  • Deinen Code kannst Du mit F8 Schritt für Schritt ausführen lassen.
  • Mittels F9 kannst Du bei der aktuellen Cursor-Position einen Haltepunkt einfügen - beim Ausführen des Programms (mit F5) wird an jener spezifischen Position unterbrochen, damit Du zum Beispiel den aktuellen Stand der Dinge überprüfen und analysieren kannst. Drückst Du erneut F9 wird der Haltepunkt wiederum entfernt.
  • Anstelle von Haltepunkten kannst Du auch CTRL+F8 drücken, dann wird das Makro bis zur aktuellen Cursor-Position ausgeführt. (Ich empfehle jedoch, da es deutlich übersichtlicher ist, mit Haltepunkten zu arbeiten!)
  • Den Einzug kannst Du mittels Tabulator vergrössern. Du kannst so auch zuerst ganze Blöcke selektieren und dann Tabulator drücken, um mehrere Zeilen gleichzeitig einzuziehen.
  • Mit Shift+Tabulator hingegen verkleinerst Du den Einzug des Selektionsbereiches.
  • Wie auch in Excel kannst Du mit der Kombination CTRL+F nach bestimmten Begriffen suchen; mit CTRL+H kannst Du einzelne Befehle oder ganzen Code suchen und ersetzen.