Wie verwende ich die goto-anweisung im vba-code?
Die VBA-GoTo-Anweisung hilft der Codeausführung, zu einer bestimmten Zeile in der Prozedur zu navigieren. Vereinfacht ausgedrückt springt VBA mit der goto-Anweisung zu einer bestimmten Zeile, die Sie angegeben haben. Wenn Sie beispielsweise angegeben haben, dass zur zweiten Zeile gesprungen werden soll, springt go zu dieser Zeile.
So verwenden Sie die VBA-GoTo-Anweisung im Code
- Zuerst müssen Sie die goto-Anweisung verwenden.
- Danach müssen Sie definieren, wohin VBA von „Gehe zu“ gehen soll.
- Als nächstes erstellen Sie das Tag, um diese Stelle in der Prozedur zu erstellen.
- Fügen Sie am Ende die Codezeile(n) hinzu, die Sie ausführen möchten.
Sub vba_goto() GoTo Last Range ("A1"). Select Last : Range ("A12"). Select End Sub
Gehen Sie zu, um einen Code zu wiederholen
Sie können die go to-Anweisung auch verwenden, um Code mithilfe einer Reihe von Bedingungen zu wiederholen.
Sub goto_repeat() Dim iMessage As String Question: iMessage = InputBox("what's the day today?") If iMessage <> "tuesday" Then MsgBox ("wrong answer, try again.") GoTo Question Else MsgBox ("that's the right answer.") End If End Sub
Wenn Sie den obigen Code ausführen, werden Sie nach dem Namen des Tages gefragt. Wenn Sie etwas anderes als „Dienstag“ eingeben, wird die Frage wiederholt. Wenn Sie sich den Code ansehen, können Sie sehen, dass wir die goto-Anweisung und die if-Anweisung verwenden müssen.
Wenn der Benutzer nun etwas anderes als die richtige Antwort eingibt, zwingt die goto-Anweisung VBA dazu, den Code zu wiederholen. (Aber wenn Sie diese Art von Code verwenden, müssen Sie sehr vorsichtig sein, da dies zu einer Endlosschleife führen kann.
VBA Gehe zum Ende
Sie können ein Sub auch mit der goto-Anweisung verlassen.
Im obigen Code haben wir das Tag „last“ direkt vor der End-Anweisung verwendet. Wenn VBA die GoTo-Anweisung erreicht, springt VBA am Ende der Prozedur zum „Last“.
GoTo-Anweisung, um zu einer Zeile in einer anderen Unterroutine zu wechseln
Nun, die Going-to-Anweisung ist sehr praktisch, um VBA von einer Stelle zur anderen springen zu lassen, aber es ist nicht möglich, sie zu einer anderen Prozedur im Modul springen zu lassen.