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