例外処理テンプレート
VBAでは「例外処理」という言葉はあまり使われませんが、エラー処理がそれに相当します。
初心者がつまずきやすいのが「エラーが出たときにどう安全に処理を続けるか」。
ここでは 例外処理の基本テンプレート を、コード例と例題付きで分かりやすく説明します。
基本の考え方
- 通常の動作: エラーが出るとVBAは止まってエラーメッセージを表示。
- 例外処理を入れると: エラーが出ても止まらず、指定した処理にジャンプして「後始末」や「メッセージ表示」ができる。
- よく使う構文:
On Error GoTo ラベル→ エラー時にラベルへジャンプOn Error Resume Next→ エラーが出ても止まらず次の行へ進むErr.Number/Err.Description→ エラー番号と説明を取得
テンプレ1:基本的な例外処理
Sub Example_BasicErrorHandling()
On Error GoTo ErrHandler
' 故意にゼロ除算エラーを発生
Dim x As Long
x = 10 / 0
' 正常終了
MsgBox "処理完了!"
Exit Sub
ErrHandler:
MsgBox "エラー番号: " & Err.Number & vbCrLf & _
"説明: " & Err.Description
End Sub
VB- ポイント:
On Error GoTo ErrHandlerでエラー時にジャンプ。Err.NumberとErr.Descriptionで原因を表示。
テンプレ2:Resume Nextでエラーをスキップ
Sub Example_ResumeNext()
On Error Resume Next
' 存在しないシートを参照
Worksheets("NoSheet").Activate
If Err.Number <> 0 Then
MsgBox "エラー発生: " & Err.Description
Err.Clear ' エラー情報をクリア
End If
On Error GoTo 0 ' 通常動作に戻す
End Sub
VB- ポイント:
Resume Nextは止まらず次へ進む。- 必ず
Err.Numberで判定して「無視しっぱなし」にならないようにする。
テンプレ3:エラーをログに記録する
Sub Example_ErrorLog()
On Error GoTo ErrHandler
' 故意にエラー発生
Worksheets("NoSheet").Activate
Exit Sub
ErrHandler:
Dim ws As Worksheet: Set ws = Worksheets("ErrorLog")
Dim r As Long
r = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
ws.Cells(r, 1).Value = Now
ws.Cells(r, 2).Value = Err.Number
ws.Cells(r, 3).Value = Err.Description
MsgBox "エラーをログに記録しました!"
End Sub
VB- ポイント:
- エラー内容をシートに残すと後から調査できる。
- 実務では「いつ・何のエラー」が重要。
テンプレ4:自作エラーを発生させる(Err.Raise)
Sub Example_CustomError()
On Error GoTo ErrHandler
Dim path As String: path = "C:\no\such\file.txt"
If Dir(path) = "" Then
Err.Raise Number:=1001, Source:="FileCheck", _
Description:="ファイルが見つかりません: " & path
End If
Exit Sub
ErrHandler:
MsgBox "自作エラー番号: " & Err.Number & vbCrLf & _
"説明: " & Err.Description
End Sub
VB- ポイント:
Err.Raiseで独自のエラーを作れる。- 条件違反を「例外」として扱える。
例題で練習
'例1:ゼロ除算でエラーを捕まえて表示
'例2:存在しないシート参照をスキップして処理続行
'例3:エラー内容をログシートに記録
'例4:ファイルが無い場合に自作エラーを発生
VB初心者向けポイント
- 例外処理は「止めずに安全に処理する」ための仕組み
- Err.Numberが0ならエラーなし
- Resume Nextは必ず判定とErr.Clearをセットで使う
- ログに残すと後から調査が楽
- Err.Raiseで独自エラーを作れる
👉 この「例外処理テンプレ」を覚えておけば、Excel VBAで エラーを安全に処理し、原因を分かりやすく表示・記録する仕組み を簡単に作成できます。
