Excel VBA 逆引き集 | エラーメッセージ

Excel VBA
スポンサーリンク

エラーメッセージの扱い方

VBAでプログラムを動かしていると、思わぬエラーが発生することがあります。
初心者がつまずきやすいのが「エラーメッセージの扱い方」。
ここでは エラーメッセージを取得・表示・記録する方法 を、コード例とテンプレートで分かりやすく説明します。


基本の考え方

  • エラーメッセージとは?
    エラーが発生したときに表示される「原因の説明」。
  • VBAで扱う方法:
    • Err.Description → エラーメッセージの内容
    • Err.Number → エラー番号
    • MsgBox → ユーザーに表示
    • ログシートやファイルに記録して後から確認も可能

テンプレ1:エラーメッセージを表示する

Sub ShowErrorMessage()
    On Error GoTo ErrHandler
    
    ' 故意にゼロ除算エラーを発生
    Dim x As Long
    x = 10 / 0
    
    Exit Sub
    
ErrHandler:
    MsgBox "エラー番号: " & Err.Number & vbCrLf & _
           "エラーメッセージ: " & Err.Description
End Sub
VB
  • ポイント:
    • Err.Description でエラーメッセージを取得。
    • vbCrLf で改行して見やすく表示。

テンプレ2:Resume Nextでエラーメッセージを確認

Sub ResumeNextErrorMessage()
    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.Description で内容を確認。

テンプレ3:エラーメッセージをログシートに記録

Sub LogErrorMessage()
    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 CustomErrorMessage()
    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.Description
End Sub
VB
  • ポイント:
    • Err.Raise で独自のエラーメッセージを作れる。
    • 条件違反を「エラー」として扱える。

例題で練習

'例1:ゼロ除算でエラーメッセージを表示
'例2:存在しないシート参照でエラーメッセージを表示
'例3:エラーメッセージをログシートに記録
'例4:自作エラーメッセージを発生させて表示
VB

初心者向けポイント

  • Err.Descriptionでエラーメッセージを取得
  • ユーザーに知らせるならMsgBox
  • 後から調べるならログに記録
  • Resume Nextを使う場合は必ず判定する
  • Err.Raiseで独自エラーメッセージを作れる

👉 この「エラーメッセージテンプレ」を覚えておけば、Excel VBAで エラーの原因を分かりやすく表示・記録し、トラブル対応をスムーズにする処理 を簡単に作成できます。

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