On Error ステートメント

エラー処理を有効または無効にします。

On Error Resume Next
On Error GoTo 0

解説

コード内で On Error Resume Next ステートメントを使用していない場合に実行時エラーが発生すると、エラー メッセージが表示され、コードの実行が停止されます。ただし、エラー処理の正確な機能はコードを実行するホストによって決まります。ホストは、場合に応じてさまざまなエラー処理を選択できます。エラー発生時にスクリプト デバッガを呼び出すようにしたり、エラー メッセージを表示せずユーザーにエラーの発生を通知しないようにすることもできます。これらは、ホストによるエラー処理の方法に過ぎません。

プロシージャの中には、呼び出し適用範囲内でエラー処理が行われている限り、エラーの発生が致命的でないものもあります。プロシージャ内でローカルのエラー処理が無効な場合にエラーが発生すると、エラー処理が有効なプロシージャが見つかるまで呼び出し適用範囲内で制御が戻され、その時点でエラーが処理されます。呼び出し適用範囲内でエラー処理が有効なプロシージャが見つからない場合は、エラー メッセージが表示されて実行停止となるか、ホストによって適切な処理が行われます。

On Error Resume Next ステートメントは、実行時エラーを発生させたステートメントの直後にあるステートメント、または、On Error Resume Next ステートメントが入っているプロシージャから最後に呼び出しを行ったステートメントの直後のステートメントを使用して、実行を継続させます。これにより、実行時エラーが発生しても処理を続けることができます。したがって、エラー処理ルーチンをプロシージャ内にインラインで構築することができます。

On Error Resume Next ステートメントは、別のプロシージャが呼び出されると非アクティブとなるため、実行時にインライン エラー処理が必要な場合は、呼び出しルーチンごとに On Error Resume Next ステートメントを実行する必要があります。プロシージャが終了すると、エラー処理機能は、そのプロシージャを入力する前に戻ります。

On Error Resume Next を使用して有効にしたエラー処理を無効にするには、On Error GoTo 0 を使用します。

次のコードは、On Error Resume Next ステートメントの使用例です。

On Error Resume Next
Err.Raise 6   ' オーバーフロー エラーを発生させます。
MsgBox ("エラー番号 " & CStr(Err.Number) & " " & Err.Description
Err.Clear   ' エラーのクリア。

必要条件

バージョン 1

参照

Err オブジェクト | Exit ステートメント