はじめに
VBAのエラー処理 On Error GoTo [ラベル名] は、一度設定すると、そのプロシージャが終了するまで有効です。しかし、「マクロの一部分だけでエラーを監視し、それ以外の部分では通常通りエラーで停止させたい」という場面があります。
このような場合に使うのが On Error GoTo 0 という特別なステートメントです。この命令は、設定したエラーハンドラを解除し、VBAの標準のエラー処理(エラーが発生したらダイアログを表示して停止する)に戻す働きをします。
この記事では、On Error GoTo 0 を使って、プロシージャの特定の部分だけを対象にエラーハンドリングを適用する、より高度なテクニックを解説します。
On Error GoTo 0 を使ったサンプルコード
このマクロは、割り算を行う部分でのみ「ゼロ除算」エラーを監視し、その処理が終わったらすぐにエラー監視を解除します。
完成コード
' 特定の箇所だけでエラーハンドリングを行う
Sub ScopedErrorHandlingExample()
Dim numerator As Double, denominator As Double, result As Double
numerator = 100
denominator = 0 ' エラーを発生させる値
'--- 処理A: ここでエラーが発生したら、VBAは通常通り停止する ---
' MsgBox 1 / 0 ' このコメントを外すと、エラーハンドラ設定前に停止する
MsgBox "これからエラーが発生する可能性のある処理を開始します。"
'--- エラーハンドラを設定 ---
On Error GoTo DivisionErrorHandler
'--- 処理B: エラーハンドリングの対象となる処理 ---
result = numerator / denominator
MsgBox "計算結果: " & result
'--- エラーハンドラを解除 ---
On Error GoTo 0
'--- 処理C: ここでエラーが発生しても、既にハンドラは解除されているためVBAは停止する ---
MsgBox "エラー監視は解除されました。"
' MsgBox 1 / 0 ' このコメントを外すと、エラー処理には飛ばずに停止する
' 正常終了時はエラー処理ブロックをスキップ
Exit Sub
'--- エラー処理ブロック ---
DivisionErrorHandler:
MsgBox "計算エラー:0で割ることはできません。", vbCritical, "エラー"
' エラー処理後、次の行(On Error GoTo 0)から処理を再開する場合は Resume Next を使う
' Resume Next
End Sub
コードの解説
On Error GoTo DivisionErrorHandler
この行から、エラーの監視が始まります。これ以降に発生したエラーは、DivisionErrorHandler: ラベルにジャンプします。
On Error GoTo 0
この一行が、エラー監視を解除する命令です。
0は特別な引数で、「これ以降のエラーはVBAの標準のルールで処理しなさい」という意味になります。- この行が実行された後、もしエラーが発生しても
DivisionErrorHandler:にはジャンプせず、VBAの標準のエラーダイアログが表示されてマクロは停止します。
なぜ On Error GoTo 0 を使うのか?
- スコープの限定: 複数の異なる種類のエラーが発生しうる長いプロシージャで、「この数行はファイルI/Oエラーを、この数行は計算エラーを」というように、エラー処理のロジックを細かく分けたい場合に役立ちます。
- デバッグの容易化: 開発中に、意図しないエラーがカスタムエラーハンドラによって握りつぶされてしまうのを防ぎたい場合に、一時的にエラー監視をオフにすることができます。
まとめ
今回は、On Error GoTo 0 を使って、設定したエラーハンドラを途中で解除する方法を解説しました。
On Error GoTo [ラベル名]: エラー監視を開始する。On Error GoTo 0: エラー監視を解除し、VBAの標準動作に戻す。
全てのプロシージャで必要になるわけではありませんが、複雑な処理を記述する際には、この「エラー監視のオン/オフ」を使いこなせるようになると、より精密で堅牢なエラー処理を実装することができます。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
