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.

Makro als Add-In einbetten

Wir haben uns in diesem früheren Beitrag (Suchmaschine programmieren) schon angeschaut, wie man bei einem Objekt (beispielsweise einem Textfeld) ein Makro hinterlegen kann – damit dieses quasi als Knopf dient, um das Programm zu starten. Ich erläutere hier, wie man ein sogenanntes Add-In erstellen kann und dieses Makro dann über Symbole in der Menüleiste aufrufen kann.

Als erstes musst Du Dein Makro aufzeichnen/programmieren. Du verwendest möglicherweise den Makro-Rekorder (wie in diesem Beitrag erklärt) und gelangst mittels "Alt+F11" in die Makro-Umgebung, wo Du auch Dein Makro findest. Sobald alles passt und die richtigen Befehle ausgeführt werden, speichere Deine Excel-Tabelle ab als "Add-In"-Datei (.xlam):

AddInDatei

Daraufhin schliesst Du sämtliche Excel-Mappen und öffnest Excel erneut – so werden im Hintergrund sämtliche Add-Ins geladen.

Du musst nun das Add-In lokalisieren und in Excel aktivieren:

Im Menüband auf Datei → Optionen → Add-Ins und unten auf "Gehe zu" klicken. Daraufhin durchsuchst Du Dein Laufwerk nach dem abgelegten Add-In:

AddInLokalisieren

Danach kannst Du mit einem Rechtsklick auf die Menüleiste oben "Menüband anpassen" selektieren. Als erstes kannst Du auf der rechten Seite eine neue, eigene Sektion erstellen. Klicke dazu auf "neue Registerkarte" und benenne diesen zum Beispiel mit "Makros" (Rechtsklick auf die erstellte Registerkarte → "Umbenennen"). Die darin enthaltene Gruppe musst Du ebenfalls benennen – ich nehme hier "Tätigkeit1". Falls Du auf mehrere Makros schnell zugreifen willst, würde ich weitere Gruppen ("Tätigkeit2", "Tätigkeit3", ...) anlegen. Das sieht dann so aus:

BenutzerdefinierteGruppe

Als nächstes suchst Du auf der linken Seite bei "Befehle auswählen" in der Rubrik "Makros". Dort solltest Du Dein aufgezeichnetes Makro finden, welches Du nun der Gruppe "Tätigkeit1" zuteilen kannst. Stelle sicher, dass Du die Gruppe im rechten Abschnitt grau markiert hast und klicke dann in der Mitte auf "Hinzufügen", um das Makro der Gruppe zuzuordnen. Nun hast Du Dein Add-In in Deinem eigenen Menüpunkt jederzeit schnell zur Hand! Innerhalb der Gruppe bei "Menüband anpassen" kannst Du via Rechtsklick → "Umbenennen" auch noch das Symbol des Makros anpassen:

ButtonUmbenennen

Das Add-In kann auch an andere Personen übertragen werden, diese müssen es wiederum unter Datei → Optionen --> Add-Ins lokalisieren und in ihre Menüleiste mitaufnehmen.