プロシージャ内の指定された行に無条件に分岐します。
構文
GoTo line
部分
line
必須。 任意の行ラベル。
注釈
GoTo
ステートメントは、そのステートメントが出現するプロシージャ内の行にのみ分岐できます。 行には、 GoTo
参照できる行ラベルが必要です。 詳細については、「 方法: ステートメントにラベルを付ける」を参照してください。
注
GoTo
ステートメントを使用すると、コードの読み取りと保守が困難になる可能性があります。 可能な限り、代わりに制御構造を使用してください。 詳細については、「 Control Flow」を参照してください。
GoTo
ステートメントを使用して、For
...Next
、For Each
...Next
、SyncLock
...End SyncLock
、Try
...Catch
の外部から分岐することはできません。...Finally
、With
...End With
、または内部のラベルへのUsing
...End Using
構築。
分岐と試用の構造
Try
内...Catch
...Finally
構築では、GoTo
ステートメントを使用した分岐に次の規則が適用されます。
ブロックまたはリージョン | 外部からの分岐 | 内側から分岐する |
---|---|---|
Try ブロック |
同じ構造の Catch ブロック からのみ 1 |
建設全体の外側にのみ |
Catch ブロック |
許可なし | 建設全体の外側、または同じ建設1のTry ブロックに対してのみ |
Finally ブロック |
許可なし | 許可なし |
1Try
の場合...Catch
...Finally
コンストラクションが別のブロック内に入れ子になっている場合、 Catch
ブロックは独自の入れ子レベルで Try
ブロックに分岐できますが、他の Try
ブロックには分岐できません。 入れ子になった Try
...Catch
...Finally
コンストラクションは、入れ子になったコンストラクションの Try
または Catch
ブロックに完全に含まれている必要があります。
次の図は、1 つの Try
構造が別の構造内に入れ子になっているものを示しています。 2 つのコンストラクションのブロック間のさまざまな分岐は、有効または無効として示されます。
例
次の例では、 GoTo
ステートメントを使用して、プロシージャ内のラベルに分岐します。
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
こちらも参照ください
.NET