ExcelマクロVBA入門
第60回.エラー処理(On Error)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2019-07-16

第60回.エラー処理(On Error)


マクロを実行していると、エラーメッセージが表示されマクロ実行が停止してしまう事があります。
マクロがエラー停止しては自動化の目的が達成されませんので、エラー停止しないようにしなければなりません。


エラーが出ないようにVBAを記述出来ればそれに越したことはありませんが、一切エラーを出さないようにVBAを書くことはかなり困難なものです。
そして、エラーを回避する方法が存在しない場合もVBAにはありますし、エラーを上手く利用する事もVBAでは必須技術になります。

マクロVBAのエラー発生例

マクロVBA実行において、以下のようなメッセージが表示される事があります。


VBA マクロ エラー処理

表示されるメッセージ内容は、その時々で変わりますが、
まあ、大抵は意味不明な日本語ですね(笑)
これは、マクロの記述の中に、実行不能な事が書かれていて、エラーが発生しているのです。
しかし、時にはエラーが発生しても処理を続けたいとか、
エラー発生したら、それに対処する為の処理をしたいとか、
そのような事が必要な場合もVBAでは結構あるものです。

エラー処理のステートメント

エラーに対処するステートメントは以下の3つになります。
On Error GoTo 行ラベル
On Error Resume Next

On Error GoTo 0

On Error GoTo 行ラベル

 エラーが発生すると、行ラベルの位置に制御が移ります。

On Error Resume Next

エラーが発生しても、エラーが発生したステートメントの次のステートメントから実行を継続します。
オブジェクトを操作する場合は、On Error GoTo ステートメントではなく、このステートメントを使ってください。

On Error GoTo 0

現在のプロシージャに含まれる使用可能なエラー処理ルーチンを無効にします。
On Error GoTo 0 ステートメントを指定していない場合、プロシージャの終了時に自動的に無効になります。

On Error の有効範囲

On Error GoTo 行ラベル

On Error Resume Next
これらは、このステートメント以降、
On Error GoTo 0が出てくるか、プロシージャが終了するまでが有効範囲となります。


On Error GoTo 行ラベルOn Error Resume Nextについては、
次回以降で詳細を説明します。

実行時エラー関連記事

実行時にトラップ可能なエラー番号一覧と対処
VBA実行時に発生するエラーのうち以下の表にあるエラーはトラップ(捕捉)できるエラーになります。OnErrorステートメントおよびErrオブジェクトのNumberロパティを使用してエラーへの対処を行うことができます。VBAでのエラーとは 上記の結果はイミディエイトウインドウに 13 型が一致しません。
よくあるVBA実行時エラーの解説と対応
VBAを書き終えて、いざ実行したら意味不明なメッセージが… ここでは初心者向けに、代表的な実行時エラーの解説とその対応について説明します。中級者以上の方は、実行時にトラップ可能なエラー番号一覧と対処 こちらを参考に、エラー対応(OnError等)を実装してください。



同じテーマ「マクロVBA入門」の記事

第57回.Applicationのプロパティ(マクロ高速化と警告停止等)
第58回.コレクションとは(Collection)
第59回.コレクション処理(For Each)
第60回.エラー処理(On Error)
第61回.「On Error GoTo」と「Exit Sub」
第62回.「On Error Resume Next」とErrオブジェクト
第63回.ブックを開く(Open)
第64回.ブックを閉じる・保存(Close,Save,SaveAs)
第65回.シートの挿入、名前の変更(Add,Name)
第66回.シートのコピー・移動・削除(Copy,Move,Delete)
第67回.総合練習問題7


新着記事NEW ・・・新着記事一覧を見る

VBAクラスのAttributeについて(既定メンバーとFor…Each)|VBA技術解説(10月19日)
VBAの用語について:ステートメントとは|VBA技術解説(10月16日)
VBAのマルチステートメント(複数のステートメントを同じ行に)|VBA技術解説(10月14日)
VBAコードの全プロシージャー・プロパィ一覧を取得|VBAサンプル集(10月12日)
VBAでエラー行位置(行番号)を取得できるErl関数|VBA技術解説(10月11日)
手動計算時の注意点と再計算方法|ExcelマクロVBA技術解説(10月9日)
引数の数を可変にできるパラメーター配列(ParamArray)|VBA入門(10月7日)
VBEの使い方:デバッグ|ExcelマクロVBA入門(10月6日)
VBAにおける配列やコレクションの起点について|VBA技術解説(10月5日)
VBEの使い方:オブジェクト ブラウザー|VBA入門(10月5日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • エラー処理(On Error)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ