Excel VBA 逆引き集 | エラー番号取得

Excel VBA
スポンサーリンク

エラー番号取得(Errオブジェクトの基本)

VBAでエラーが発生したとき、その原因を調べるために エラー番号(Err.Number) を取得する方法があります。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • Errオブジェクト
    VBAでエラーが起きると、自動的に Err オブジェクトに情報が入ります。
  • よく使うプロパティ
    • Err.Number → エラー番号(0ならエラーなし)
    • Err.Description → エラーの説明文
    • Err.Source → エラーの発生元

テンプレ1:エラー番号を取得して表示

Sub ErrorNumber_Basic()
    On Error GoTo ErrHandler
    
    ' 故意にゼロ除算エラーを発生させる
    Dim x As Long
    x = 10 / 0
    
    Exit Sub
    
ErrHandler:
    MsgBox "エラー番号: " & Err.Number & vbCrLf & _
           "説明: " & Err.Description
End Sub
VB
  • ポイント:
    • On Error GoTo ErrHandler でエラー時にジャンプ。
    • Err.NumberErr.Description を表示。

テンプレ2:Resume Nextでエラー番号をチェック

Sub ErrorNumber_ResumeNext()
    On Error Resume Next
    
    ' 存在しないシートを参照
    Worksheets("NoSheet").Activate
    
    If Err.Number <> 0 Then
        MsgBox "エラー番号: " & Err.Number & vbCrLf & _
               "説明: " & Err.Description
        Err.Clear   ' エラー情報をクリア
    End If
    
    On Error GoTo 0   ' 通常動作に戻す
End Sub
VB
  • ポイント:
    • Resume Next は止まらず次へ進む。
    • Err.Number が0以外ならエラー発生。

テンプレ3:ログシートにエラー番号を記録

Sub ErrorNumber_Log()
    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 ErrorNumber_Raise()
    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.Raiseで独自エラーを作れる

👉 この「エラー番号取得テンプレ」を覚えておけば、Excel VBAで エラーの原因を番号で特定し、ログやメッセージで分かりやすく管理する処理 を簡単に作成できます。

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