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