Excel VBA 逆引き集 | 例外処理テンプレ

Excel VBA
スポンサーリンク

例外処理テンプレート

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.NumberErr.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で エラーを安全に処理し、原因を分かりやすく表示・記録する仕組み を簡単に作成できます。

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