エラーまとめテンプレ
VBAを業務で使うと、必ず「エラー処理」が必要になります。
初心者がつまずきやすいのは「どこでエラーが出るか分からない」「エラーが出ても止まってしまう」こと。
そこで エラー処理をまとめて管理するテンプレート を用意しておくと便利です。
基本の考え方
- 目的:
- エラーが出ても止まらず、処理を安全に終了させる
- エラー内容を分かりやすくユーザーに伝える
- ログに残して後から調査できるようにする
- よく使う構文:
On Error GoTo ラベル→ エラー時にジャンプErr.Number/Err.Description→ エラー番号と説明Resume Next→ エラーを無視して次へ進む(要注意)
テンプレ1:基本エラーまとめ
Sub ErrorTemplateBasic()
On Error GoTo ErrHandler
' --- メイン処理 ---
Worksheets("Data").Range("A1").Value = "テスト"
Worksheets("NoSheet").Activate ' 故意にエラー
MsgBox "処理完了!"
Exit Sub
' --- エラー処理まとめ ---
ErrHandler:
MsgBox "エラー番号: " & Err.Number & vbCrLf & _
"説明: " & Err.Description
End Sub
VB- ポイント:
- エラーが出たら必ず
ErrHandler:にジャンプ。 - エラー番号と説明をまとめて表示。
- エラーが出たら必ず
テンプレ2:エラーをログに残す
Sub ErrorTemplateLog()
On Error GoTo ErrHandler
' --- メイン処理 ---
Worksheets("Data").Range("A1").Value = "テスト"
Worksheets("NoSheet").Activate ' 故意にエラー
MsgBox "処理完了!"
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- ポイント:
- エラー内容をシートに記録。
- 「いつ・何のエラー」が後から分かる。
テンプレ3:共通エラーハンドラ関数
Sub HandleError(ByVal procName As String)
MsgBox "処理名: " & procName & vbCrLf & _
"エラー番号: " & Err.Number & vbCrLf & _
"説明: " & Err.Description
Err.Clear
End Sub
Sub ExampleUse()
On Error GoTo ErrHandler
' --- メイン処理 ---
Worksheets("NoSheet").Activate
Exit Sub
ErrHandler:
HandleError "ExampleUse"
End Sub
VB- ポイント:
- 共通関数にまとめると複数プロシージャで使える。
procNameを渡すと「どの処理でエラーか」分かる。
テンプレ4:Resume Nextで軽いエラーをスキップ
Sub ErrorTemplateResumeNext()
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- ポイント:
- 軽いエラーはスキップして処理続行。
- 必ず
Err.Numberを確認して「無視しっぱなし」にならないようにする。
例題で練習
'例1:基本エラーハンドラでエラー番号と説明を表示
'例2:エラーをログシートに記録
'例3:共通関数でエラー処理をまとめる
'例4:軽いエラーをResume Nextでスキップ
VB初心者向けポイント
- エラー処理は必ず「まとめて」書く → コードが見やすくなる
- Err.Number / Err.Description が基本情報
- ログに残すと後から調査が楽
- Resume Nextは慎重に使う → 無視しっぱなしは危険
- 共通関数化すると再利用できる
👉 この「エラーまとめテンプレ」を覚えておけば、Excel VBAで エラーを安全に処理し、ユーザーに分かりやすく伝え、業務エラーを防ぐ仕組み を簡単に作成できます。
