次の方法で共有


GoTo ステートメント

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

構文

GoTo line  

部分

line
必須。 任意の行ラベル。

注釈

GoTo ステートメントは、そのステートメントが出現するプロシージャ内の行にのみ分岐できます。 行には、 GoTo 参照できる行ラベルが必要です。 詳細については、「 方法: ステートメントにラベルを付ける」を参照してください

GoTo ステートメントを使用すると、コードの読み取りと保守が困難になる可能性があります。 可能な限り、代わりに制御構造を使用してください。 詳細については、「 Control Flow」を参照してください。

GoTo ステートメントを使用して、For...NextFor Each...NextSyncLock...End SyncLockTry...Catch の外部から分岐することはできません。...FinallyWith...End With、または内部のラベルへのUsing...End Using構築。

分岐と試用の構造

Try内...Catch...Finally構築では、GoTo ステートメントを使用した分岐に次の規則が適用されます。

ブロックまたはリージョン 外部からの分岐 内側から分岐する
Try ブロック 同じ構造の Catch ブロック からのみ 1 建設全体の外側にのみ
Catch ブロック 許可なし 建設全体の外側、または同じ建設1Tryブロックに対してのみ
Finally ブロック 許可なし 許可なし

1Tryの場合...Catch...Finally コンストラクションが別のブロック内に入れ子になっている場合、 Catch ブロックは独自の入れ子レベルで Try ブロックに分岐できますが、他の Try ブロックには分岐できません。 入れ子になった Try...Catch...Finally コンストラクションは、入れ子になったコンストラクションの Try または Catch ブロックに完全に含まれている必要があります。

次の図は、1 つの Try 構造が別の構造内に入れ子になっているものを示しています。 2 つのコンストラクションのブロック間のさまざまな分岐は、有効または無効として示されます。

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

こちらも参照ください