GoTo ステートメント

プロシージャ内の指定した行に無条件に分岐します。

GoTo line

指定項目

  • line
    必ず指定します。任意の行ラベルを指定します。

解説

GoTo ステートメントの分岐先は、同じプロシージャ内だけです。他のプロシージャには分岐できません。分岐先の行には、GoTo が参照するための行ラベルが必要です。詳細については、「方法: ステートメントへのラベル付け (Visual Basic)」を参照してください。

[!メモ]

GoTo ステートメントを使用すると、プログラムが読みにくくなり、保守が困難になります。可能な限り、制御構造を使うようにしてください。詳細については、「Visual Basic における制御フロー」を参照してください。

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 ある Try...Catch...Finally 構築が別の構築の中に入れ子になっている場合、Catch ブロックから自分と同じレベルの Try ブロックへの分岐は可能ですが、それ以外の Try ブロックへは分岐できません。入れ子にされた Try...Catch...Finally 構築は、外側の構築の Try ブロックまたは Catch ブロック内に完全に含まれていることが必要です。

次の例では、Try 構築が別の構築にネストされています。2 つの構築のブロックどうしのさまざまな分岐について、有効または無効を示してあります。

Try 構築内の有効な分岐と無効な分岐

Try 構造内の分岐のグラフィック ダイアグラム

使用例

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

参照

関連項目

Do...Loop ステートメント (Visual Basic)

For...Next ステートメント (Visual Basic)

For Each...Next ステートメント (Visual Basic)

If...Then...Else ステートメント (Visual Basic)

Select...Case ステートメント (Visual Basic)

Try...Catch...Finally ステートメント (Visual Basic)

While...End While ステートメント (Visual Basic)

With...End With ステートメント (Visual Basic)