GoTo-instruktion
Grenar villkorslöst till en angiven rad i en procedur.
Syntax
GoTo line
Delvis
line
Obligatoriska. Alla radetiketter.
Kommentarer
-instruktionen GoTo
kan endast förgrenas till rader i den procedur som den visas i. Raden måste ha en radetikett som GoTo
kan referera till. Mer information finns i Anvisningar: Etikettinstruktioner.
Kommentar
GoTo
-instruktioner kan göra det svårt att läsa och underhålla koden. Använd i stället en kontrollstruktur när det är möjligt. Mer information finns i Kontrollflöde.
Du kan inte använda en GoTo
-instruktion för att förgrena utanför en For
...Next
, For Each
...Next
, SyncLock
...End SyncLock
, Try
...Catch
...Finally
, With
...End With
, eller Using
...End Using
konstruktion till en etikett inuti.
Förgrening och prova konstruktioner
Inom en Try
...Catch
...Finally
gäller följande regler för förgrening med -instruktionen GoTo
.
Blockera eller region | Förgrena in utifrån | Förgrena sig inifrån |
---|---|---|
Try blockera |
Endast från ett Catch block av samma konstruktion 1 |
Endast till utanför hela konstruktionen |
Catch blockera |
Tillåts aldrig | Endast till utanför hela konstruktionen, eller till blocket Try av samma konstruktion 1 |
Finally blockera |
Tillåts aldrig | Tillåts aldrig |
1 Om en Try
...Catch
...Finally
konstruktion är kapslad i en annan, ett Catch
block kan förgrenas till Try
blocket på sin egen kapslingsnivå, men inte i något annat Try
block. En kapslad Try
...Catch
...Finally
konstruktionen skall vara helt innesluten i en Try
eller Catch
flera delar av konstruktionen inom vilken den är kapslad.
Följande bild visar en Try
konstruktion kapslad i en annan. Olika grenar bland blocken i de två konstruktionerna anges som giltiga eller ogiltiga.
Exempel
I följande exempel används -instruktionen GoTo
för att förgrena till radetiketter i en procedur.
Sub GoToStatementDemo()
Dim number As Integer = 1
Dim sampleString As String
' Evaluate number and branch to appropriate label.
If number = 1 Then GoTo Line1 Else GoTo Line2
Line1:
sampleString = "Number equals 1"
GoTo LastLine
Line2:
' The following statement never gets executed because number = 1.
sampleString = "Number equals 2"
LastLine:
' Write "Number equals 1" in the Debug window.
Debug.WriteLine(sampleString)
End Sub