エラーメッセージの扱い方
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で エラーの原因を分かりやすく表示・記録し、トラブル対応をスムーズにする処理 を簡単に作成できます。
