VBA エラー無視

VBAのエラートラップ【On Error Resume Next】で【エラー無視】設定&解除

VBA「On Error Resume Next」について、初心者でもわかりやすいようにサンプルコードを元に解説します。

※注意事項がありますので、必ず、エラー無視の設定&解除をセットで覚えてください

ExcelのVBA「On Error Resume Next」とは、エラー無視して、次の行の処理を実行してくれるステートメントになります。

非常に便利ですね。

便利な反面、「本当に無視してもいいのか?」を必ず考慮する必要があります。

注意事項は、ありますが、「On Error Resume Next」は、かなり簡単に覚えることができると思いま

す。

◆はじめに

VBAで「On Error Resume Next」を使用し、エラー無視するということは、マクロ実行中にエラーが発生しても中断せずに処理続行可能になります。

要約すると、VBAの「On Error Resume Next」は、初心者向けの簡単なエラーの無視をする処理です。

マクロ開発中に処理に関係ないのに、エラーが出て、うっとうしい時には
「On Error Resume Next」を使って、VBAによるエラーを無視すればいいのです。

VBAのエラー無視する設定方法だけではなく
合わせて、エラー無視設定の「On Error Resume Next」を解除する方法についても解説していきます。

エラー関係の処理でいうと、エラーを無視するのではなく
VBAでエラー処理する方法の基本である 「On Error GoTo」の使い方やエラー発生後の処理など
について知らない方は、こちらをご覧ください。

エラー処理の基本である 「On Error GoTo」を知らないと
「On Error Resume Next」を使いこなせない
と思いますので
まったく知らない方は、さらっと目を通しておくことをオススメします。

VBA「On Error Resume Next」を使ってサンプルコードを掲載しますが
「On Error Resume Next」を使ってはダメな場面もあるので、注意事項にも、目を通しておくことをオススメします。

VBAのサンプルコードの内容は、「On Error Resume Next」を使用して、エラー無視するのと
エラー無視を解除するコードを掲載しています。

では、ExcelのVBAでエラー無視ができる方法として、「On Error Resume Next」の使い方を解説します。

◆「On Error Resume Next」とは?

VBA「On Error Resume Next」は、エラー発生を無視する事ができます。

厳密には「On Error Resume Next」とは、VBAのエラー発生が無効な状態になるコードです。

エラー発生が無効な時にエラーが発生した場合は、次のような挙動になります。

・VBAエラーを無視

エラーを無視しているので
エラーが発生しても、一時停止しません。

そのまま処理し続けます。

・エラー発生ウィンドウが表示されない

通常、VBAエラーが発生した場合は
「エラーNo」や「エラー内容」が記載されているエラーウィンドウが表示されますが
「On Error Resume Next」を記述した次の処理からは、表示されません。

・次の行の処理を実行してくれる

エラーが発生した行の処理をキャンセルして、次の行の処理をします。

・「Err.Number」等の情報はちゃんと残っている

エラーが発生した場合は
エラー発生に関するプロパティやメソッドの情報などはしっかり残っています。

そこは自分で「Err.Clear」でリセットするしかありません。

「Err」に関するプロパティやメソッドの詳細はこちらご覧ください。

◆「On Error Resume Next」の使い方とサンプルコード

●サンプルコード

On Error Resume Next 'エラー無視開始
'//処理
On Error GoTo 0 '通常通りエラーが発生すれば停止

●「On Error Resume Next」の使い方

・エラー無視の設定

VBAでは、「On Error Resume Next」と記述するだけで、エラーが発生しても
エラーウィンドウを表示させずに、処理をそのまま続行することが可能です。

ですが、このままでは、エラーが発生してほしい時もしなくなってしまいます。

ですので、次項で解説する「On Error Resume Next」の解除コードが必要になります。

・エラー無視設定を解除

「On Error Resume Next」にてエラー無視設定をした場合を解説します。

エラーを無視したい処理区間の後に「On Error GoTo 0」と記述すれば
エラー無視モードを終了できます。

そうすると、通常通りにVBAのエラーウィンドウを表示させることができます。

・エラー無視の使い方まとめ

VBAにて、エラー無視する「On Error Resume Next」
それを解除する「On Error GoTo 0」は、必ず、セット
で覚えてください。

◆【On Error Resume Next】の注意事項

・VBAで「エラーを無視」している事を理解する

意味はそのままなのですが、「エラーを無視」という事は
VBAにとっておかしい状態が発生しても処理し続けます。

なので予期せぬ動作する可能性もあるという事を理解した上で
「On Error Resume Next」を気を付けてご使用ください。

エラーウィンドウはうっとうしい時もあれば、助けられた事もあると思います。

VBA作成途中のデバッグ時に「On Error Resume Next」を使用してしまうと
エラーが発生しているのに気づくことができません。

なので、適切な使い方を心がけてください。

・VBAのエラー無視終了宣言をする

重要なので、何度も申し上げますが
「On Error Resume Next」によるVBAのエラー無視を使用した場合は
エラー無視終了宣言をしてください。

エラー無視終了宣言は「On Error GoTo 0」です。

「On Error Resume Next」より処理が後のコードは、エラー無視したい箇所以外で
エラー発生しても、当然ながら、エラーが無視され、VBAは処理され続けます。

「On Error Resume Next」の後は、必ず、「On Error GoTo 0」と記述して
エラー無視終了宣言しましょう。

◆【Resume Next】を使うタイミング

意図的にエラーが発生する可能性がある場合

例えば

  • ファイルの有無を確認する際に、ファイルが存在しない場合
  • シートが存在しない場合に、シートを参照しようとした場合

エラーが発生しても処理を続行したい場合

例えば

  • 一部のデータが欠けていても、残りのデータを処理したい場合
  • エラーが発生した行をスキップして、次の行から処理を再開したい場合

◆まとめ

マクロでエラーを無視する方法である「On Error Resume Next」の使い方を詳しく解説しました。

エラーを無視している事を忘れずにデバッグしてください。

注意事項を必ず読んで頂いて、エクセルVBAで「On Error Resume Next」を使うことをオススメします。

不明点等あれば、ぜひコメントよろしくお願いします。

Kagg.jp

◆「あなたへ」のおすすめリンク

マクロを高速化したいあなたへ~VBA高速化の常識~

マクロでできることをおさらい

最速でブックを開く

共有クレジットカード2枚~同棲や夫婦に便利な~ファミリーカード~

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です