更新日:、 作成日:

VBA Error 関数:エラーメッセージを取得する

はじめに

Excel VBA マクロの Error 関数からエラーメッセージを取得する方法を紹介します。

Error 関数は、エラー番号に対応するエラーメッセージを返します。

Error(13) なら 型が一致しません。 を返します。

Error() なら最後に発生したエラーのメッセージを返します。

Error 13 なら「エラー 13 型が一致しません。」を発生させます。

エラー番号からエラーメッセージを取得したいときに使用します。

エラー情報を取得するには「エラー情報を取得する」をご覧ください。

Error 関数の引数と戻り値

Error()
最後に発生したエラーのエラーメッセージを取得します。

Error(エラー番号)
エラー番号のエラーメッセージを取得します。

引数「エラー番号」省略できます。0 ~ 65,535 の範囲で指定します。
戻り値の型文字列型 (String)

解説

VBA から発生するエラーの番号に対応するメッセージを取得できます。

引数「エラー番号」が 13 なら 型が一致しません。 を返します。これは「エラー 13 型が一致しません。」のエラーです。

引数「エラー番号」が 1 など、対応するエラーが存在しないなら アプリケーション定義またはオブジェクト定義のエラーです。 を返します。

引数「エラー番号」を省略したときは、最後に発生したエラーのエラーメッセージを返します。エラーが発生していないときは空文字 "" を返します。

VBA から発生したエラーの詳細な内容は Err オブジェクトから取得できます。Err オブジェクトの Description プロパティと Error 関数が返すエラーメッセージは同じです。

詳しくは「エラー情報を取得する」をご覧ください。取得できるエラーメッセージの一覧も紹介しています。

エラーを発生

Error エラー番号 のように () を付けないでエラー番号を指定すると、強制的にその番号のエラーを発生させる Error ステートメントになります。これは Error 関数とは別ものです。

Err.Raise(エラー番号) のように入力しても、エラーを発生させられます。

使用例

Error 関数の使用例を紹介します。

エラーメッセージを取得する

エラー番号のエラーメッセージを取得します。

Dim s As String
s = Error(13)
Debug.Print(s) ' 型が一致しません。

s = Error(6)
Debug.Print(s) ' オーバーフローしました。

s = Error(1)
Debug.Print(s) ' アプリケーション定義またはオブジェクト定義のエラーです。

最後に発生したエラーを取得する

最後に発生したエラーを取得します。

Sub 実行()
On Error GoTo Catch

    Dim s As String
    s = Error ' 最後に発生したエラーを取得
    Debug.Print(s) ' ""

    ' エラーを発生させる
    Error 13 ' Error ステートメント、強制的にエラー 13 を発生させる。

Catch:
    s = Error ' 最後に発生したエラーを取得
    Debug.Print(s) ' 型が一致しません。

    s = Err.Description
    Debug.Print(s) ' 型が一致しません。
End Sub