VBAマクロのエラー処理
VBAのエラー処理のサンプルです.
目次
エラーのトラップ
エラーが生じた場合に処理を分岐させるにはGoTo
で指定したラベルまでジャンプさせます.
ジャンプ先のラベルに到達する直前では,Exit Sub
によって通常の処理のフローを終了させるようにしてください.
そうでなければ,そのままエラー時の処理も実行してしまいます.
なお,GoTo
のあとに0
を指定すると,エラートラップが解除されます.
On Error GoTo ラベル |
処理の再開
エラー発生後に処理を再開するにはResume
を使います.
On Error Resume ラベル |
とすると,ラベルにジャンプをして処理を再開します.
特に,ラベルがNext
の場合,発生した次の行から処理を再開します.
ラベルが0
の場合(または省略された場合),同じ行で処理を再開します.
エラー番号ごとの条件分岐
エラーが発生した場合Err
オブジェクトのNumber
プロパティが0
からエラー番号に変更されます.
この番号を利用してエラーメッセージを分岐し,ユーザーに問題を伝えることができます.
Select Case Err.Number |
複数のシートに処理を施す場合などには,シートごとで生じたエラーを都度クリアすべきでしょう.これはErr.Clear
で行えます.
参考文献
スピル関数やPower Query,コメントへのリプライなどの新しい機能が紹介されているほか,他のプログラミング言語で処理することの多いファイル操作や読み書きもマクロでパッケージ化して第三者に渡したい場合に助けとなる逆引き辞典です.
- 大村あつし・古川順平 (2021)「Excel VBA コードレシピ集」技術評論社.