On Error


On Errorステートメント

構文

On Error GoTo line

On Error Resume Next

On Error GoTo 0

lineには、分岐先の行ラベルまたは行番号を指定します。

解説

エラー処理ルーチンを有効にし、エラーが発生したときの処理を指定します。On Errorステートメントでエラー処理ルーチンを有効にしていないと、エラーが発生したときにプログラムは停止します。また、On Errorステートメントで、エラー処理ルーチンを無効にすることもできます。

On Error GoTo line では、エラーが発生するとlineで指定した行ラベルまたは行番号に処理が移ります。

On Error Resume Next では、エラーが発生するとエラーの発生した次の行から処理を続行します。

On Error Goto 0 は、エラー処理ルーチンを無効にします。

サンプル

次の例は、エラーが発生したときmyError処理を移します。サンプルでは、AドライブがFDドライブで、FDの準備ができていないためエラーが発生すると仮定しています。

Sub Sample()
    Dim buf As String
    On Error GoTo myError
    buf = Dir("A:\Dummy.dat")
    If buf = "" Then
        MsgBox "ファイルがありません"
    Else
        MsgBox "ファイルが存在します"
    End If
    Exit Sub
myError:
    MsgBox "エラーが発生しました"       '表示されます
End Sub

次の例は、エラーが発生すると、エラーが発生した次の行から処理を続行します。

Sub Sample()
    Dim buf As String
    On Error Resume Next
    buf = Dir("A:\Dummy.dat")
    If buf = "" Then
        MsgBox "ファイルがありません"   '表示されます
    Else
        MsgBox "ファイルが存在します"
    End If
    Exit Sub
myError:
    MsgBox "エラーが発生しました"
End Sub