Excel VBAでエラー処理を行う:On Error

エラー処理とは?

プログラムが何らかの原因で意図しない処理を行なった場合、悪影響を最低限に抑える為の処理のことをエラー処理と言います。考え方には次の2通りがあります。

フェイルセーフ(Fail-Safe) :安全を第一(データの消失や破壊防止)に考え、処理を中断し以後の処理は行わない
フールプルーフ(Fool-Ploof):できる限り処理を簡素化し、間違いが起こっても他の処理に影響しないようにする

Excel-VBAでのエラー処理

Excel-VBAでは「On Error」というステートメントで、プログラム専用のエラー処理を行なうことが可能です。「On Error Goto」は、「エラーが起こったときには、次の処理を行う」という意味です。

使い方は以下の通りです。

また、エラーが発生した時点で処理そのものを強制中断する場合は、

エラーが発生しても強制的に処理を続行する場合は、

というものを、エラーが発生する可能性のある処理の前の行に宣言します(エラー処理の注意点参照)。

エラー処理後に処理を続行したい場合は、エラー処理の一番最後の行に、

のどちらかを追加します。

<マクロ例>

セルB2が数値でなかった場合、エラーメッセージを表示するプログラムを組んでみます。

エラー処理の注意点

エラー処理を行なうにあたって、次の点は慎重に検討する必要があります。

・発生したエラーが処理結果やPC動作等に問題あるかどうか?
・適切なエラー処理かどうか?

その理由として2つ挙げられます。

・エラー処理自体がさらなるエラーの発生源となる可能性がある(特にOn Error Resume Nextはエラーを無視して処理継続するため、要注意)。
・エラー処理は全体の処理速度を低下させてしまうことがある(エラートラップの処理内容にもよる)。

また、エラートラップの宣言は、必ず処理の前に行いましょう。次のマクロの例では宣言がエラー発生後であるため、エラートラップが有効になっていません。

<マクロ例>


Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて

UX MILKのディレクター募集