Excel VBA 逆引き集 | エラーまとめテンプレ

Excel VBA
スポンサーリンク

エラーまとめテンプレ

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で エラーを安全に処理し、ユーザーに分かりやすく伝え、業務エラーを防ぐ仕組み を簡単に作成できます。

タイトルとURLをコピーしました