アプリケーションの実行中に、何らかのエラーが発生した場合、処理が中断されエラーメッセージが表示されます。
エラー発生時に独自のエラーメッセージを表示するためには、エラーを制御する処理(エラー処理ルーチン)を用意します。
次のサンプルプロシージャは、On Errorステートメントを使って、エラーが発生したらメッセージボックスを表示して処理を終了しています。
On Errorステートメントは、エラー処理ルーチンを有効にし、プロシージャ内でのエラー処理ルーチンの位置を指定します。
Sub Sample()
Dim i As Integer
On Error GoTo Err_Msg
i = 1 / 0
Exit Sub
Err_Msg:
MsgBox "エラーが発生しました"
End Sub
サンプルプロシージャでは、0で除算を行うのでエラーが発生します。
エラーが発生すると、On Errorステートメントで指定された「Err_Msg」という行ラベルで設定したエラー処理ルーチンにプログラムの制御が移り、エラー処理(メッセージボックスの表示)がおこなわれます。
On Errorステートメントには、次の構文があります。
<構文1> On Error GoTo line
引数lineに指定した行から始まるエラー処理ルーチンを有効にします。引数lineは必ず指定します。引数line には任意の行ラベルまたは行番号を指定します。実行時エラーが生成されると、ここで設定したエラー処理ルーチンにプログラムの制御が移り、エラー処理ルーチンがアクティブになります。引数lineに指定する行は、On Errorステートメントと同じプロシージャ内に存在しなければなりません。この制限に従わなければ、コンパイル時エラーが発生します。
<構文2> On Error Resume Next
実行時エラーが発生してもプログラムを中断せず、エラーが発生したステートメントの次のステートメントから実行を継続します。オブジェクトを操作する場合は、On Error GoToステートメントではなく、このステートメントを使ってください。
<構文3> On Error GoTo 0
現在のプロシージャに含まれる使用可能なエラー処理ルーチンを無効にします。