例: GoTo ステートメント

この例では、On Error...GoTo、On...GoTo、Resume...GoTo、GoTo の使い方を示します。

ユーザーが値を入力します。値が 1、2、3 のときは、On...GoTo ステートメントが label1、label2、または label3 に制御を移します。値が On...GoTo の範囲 (0 - 255) 内の別の数値のときは、制御は次のステートメントに移ります。On...GoTo の範囲外の数値、または Cint 関数で整数に変換できない値を入力すると、エラー条件が発生し、OnError...GoTo ステートメントが制御を OutOfRange ラベルに移します。

ユーザー入力に応じて、OneTwoThree サブルーチンが適切なメッセージを表示します。入力が有効なときは、Exit Sub ステートメントがサブルーチンを終了します。入力が無効なときは制御が EnterNum ラベルに移るため、有効な値を再入力することができます。

Sub OneTwoThree
   Dim num As Integer
   On Error GoTo OutOfRange
EnterNum:
   num% = CInt(InputBox("Enter 1, 2, or 3"))
   On num% GoTo label1, label2, label3
  ' The user did not enter 1, 2, or 3, but a run-time error
  ' did not occur (the user entered a number in the 
  ' range 0-255).
   MessageBox "You did not enter a correct value! Try again!"
   GoTo EnterNum
label1:
   MessageBox "You entered 1."
   Exit Sub
label2:
   MessageBox "You entered 2."
   Exit Sub
label3:
   MessageBox "You entered 3."
   Exit Sub
   ' An error condition has occurred.
OutOfRange:
   MessageBox "The value you entered is negative, " _
      & "greater than 255, or is not a number. Try again!"
   GoTo EnterNum   
End Sub
OneTwoThree   ' Call the OneTwoThree sub.