On...GoSub、On...GoTo ステートメント

の値に応じて、複数の指定した行のいずれかに分岐します。

構文

On expression GoSub destinationlist
On expression GoTo destinationlist


On...GoSub ステートメントおよび On...GoTo ステートメントの構文には、次の指定項目があります。

指定項目 説明
expression 必須。 0 以上 255 以下の整数に評価される任意の数値式です。 expression が整数以外の数値の場合は、評価の前に四捨五入されます。
destinationlist 必須。 コンマで区切られた行番号または行ラベルのリスト。

解説

expression の値により、destinationlist 内のどの行に分岐するかが決まります。 expression の値が 1 より小さい場合やリスト内の項目数よりも大きい場合、結果は次のいずれかになります。

expression の値 その結果
0 に等しい On...GoSub または On...GoTo の次の ステートメントに制御が移動します。
リスト内の項目数より大きい On...GoSub または On...GoTo の次のステートメントに制御が移動します。
負の値 エラーが発生します。
255 より大きい エラーが発生します。

同じリスト内に行番号と行ラベルが混在していてもかまいません。 On...GoSub および On...GoTo には、任意の数の行番ラベルと行番号を使用できます。 ただし、1 行に収まらない数のラベルや番号を使用する場合は、行連結文字を使用して、論理行が次の物理行につながるようにする必要があります。

ヒント

Select Case を使用すると、より構造化された柔軟な方法で複数の分岐を実行できます。

この例では、On...GoSub ステートメントと On...GoTo ステートメントを使用して、それぞれサブルーチンと行番号に分岐します。

Sub OnGosubGotoDemo() 
Dim Number, MyString 
 Number = 2 ' Initialize variable. 
 ' Branch to Sub2. 
 On Number GoSub Sub1, Sub2 ' Execution resumes here after 
 ' On...GoSub. 
 On Number GoTo Line1, Line2 ' Branch to Line2. 
 ' Execution does not resume here after On...GoTo. 
 Exit Sub 
Sub1: 
 MyString = "In Sub1" : Return 
Sub2: 
 MyString = "In Sub2" : Return 
Line1: 
 MyString = "In Line1" 
Line2: 
 MyString = "In Line2" 
End Sub

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。