サイトについて      連絡先   検索

VBA エラー情報を取得する

はじめに

Excel VBA のエラー情報を取得する方法を紹介します。

Err オブジェクトから発生したエラーの情報を取得できます。

エラー発生の原因やコードを特定するのに必要になります。

エラー情報を取得する

エラー情報を取得するには、エラーをキャッチする必要があります。詳しくは「エラー処理」をご覧ください。

On Error GoTo ラベル名と書くと、発生したエラー情報を Err オブジェクトから取得できます。


On Error GoTo Catch
    Dim i As Integer
    i = 1
    i = "a" ' エラー発生

    Exit Sub     
    Exit Function

Catch:
    ' ここでエラー情報を取得できます
    Debug.Print(Err.Description) ' 型が一致しません。
    Debug.Print(Err.Number)      ' 13

Err から次の情報を取得できます。

プロパティ名 説明
Descriptionエラーに関する説明文型が一致しません。
HelpContextヘルプファイルのトピックに対応するコンテキスト番号1000013
HelpFileヘルプファイルへの絶対パスC:\PROGRA ... VbLR6.chm
LastDLLError最後にDLLを呼び出したときのエラーコード13
Numberエラー番号13
Sourceエラー発生元のオブジェクト名VBAProject

この中でよく使用するのは Description と Number です。このエラー情報を元にどんなエラーが発生したのか特定します。関数名をエラー情報に追加すると特定が楽になります。

エラー表示専用の関数を作成しておくと便利です。


Public Sub ShowErrorMessage()
    
    Dim s As String
    s = "エラーが発生しました。"
    s = s & vbCrLf & "エラー番号:" & Err.Number
    s = s & vbCrLf & "エラー内容:" & Err.Description

    MsgBox(s)

End Sub

次のように使用できます。


On Error GoTo Catch
    Dim i As Integer
    i = 1
    i = "a" ' エラー発生  

    Exit Sub
    Exit Function

Catch:
    ShowErrorMessage ' エラー情報表示
1

関連ページ