概要

Error関数は、VBAでエラー番号に対応するエラーメッセージを取得するために使用される関数です。VBAでは、エラーが発生するとエラー番号が付与されますが、この番号だけでは何が原因か分かりにくい場合があります。Error関数を使うことで、エラー番号に対応する具体的なメッセージを取得でき、エラーハンドリングやデバッグの際に役立ちます。

構文

Error([errornumber])

パラメータ

  • errornumber(省略可能)

    エラー番号を指定します。指定したエラー番号に対応するエラーメッセージを返します。パラメータを省略すると、最後に発生したエラー番号のメッセージが返されます。

戻り値

  • 指定したエラー番号に対応するエラーメッセージを文字列で返します。エラー番号が無効な場合や対応するメッセージが存在しない場合は、空の文字列を返します。

使用例

基本的な使用例 - エラー番号に対応するエラーメッセージの取得

以下の例では、Error関数を使用して、指定したエラー番号に対応するエラーメッセージを取得し、メッセージボックスで表示します。

Sub ShowErrorMessage()
    Dim errorMsg As String

    ' エラー番号1004に対応するエラーメッセージを取得
    errorMsg = Error(1004)

    ' エラーメッセージを表示
    MsgBox "エラー1004のメッセージ: " & errorMsg
End Sub

この例では、エラー番号1004に対応するメッセージが表示されます。1004は一般的なExcelの実行時エラーです。

エラーが発生した場合にエラーメッセージを取得する

次の例では、On Errorステートメントを使ってエラーをトラップし、Error関数で発生したエラーのメッセージを表示します。

Sub HandleError()
    On Error GoTo ErrorHandler

    ' ゼロ除算エラーを発生させる
    Dim x As Integer
    x = 10 / 0

    Exit Sub

ErrorHandler:
    ' 発生したエラー番号とメッセージを表示
    MsgBox "エラー番号: " & Err.Number & vbCrLf & "エラーメッセージ: " & Error(Err.Number)
End Sub

この例では、ゼロ除算によるエラーが発生し、そのエラー番号と対応するメッセージをError関数で取得して表示しています。

ユーザー定義エラーのメッセージをカスタマイズする

Error関数は標準のエラーだけでなく、ユーザー定義エラーにも対応できます。以下の例では、ユーザーが定義したエラーに対してカスタムメッセージを追加し、それを取得する方法を示します。

Sub CustomErrorMessage()
    On Error GoTo ErrorHandler

    ' ユーザー定義エラーを発生
    Err.Raise 60000, , "カスタムエラーが発生しました。"

    Exit Sub

ErrorHandler:
    ' 発生したエラー番号とメッセージを表示
    MsgBox "エラー番号: " & Err.Number & vbCrLf & "エラーメッセージ: " & Error(Err.Number)
End Sub

この例では、Err.Raiseを使ってユーザー定義エラー(60000)を発生させ、そのメッセージをError関数で取得しています。

複数のエラー番号をループで確認する

以下のコードでは、エラー番号をループで確認し、それぞれに対応するエラーメッセージを表示します。定義されていないエラー番号の場合は空のメッセージを返します。

Sub CheckMultipleErrors()
    Dim i As Integer
    Dim errorMsg As String

    ' 100から110までのエラー番号のメッセージを表示
    For i = 100 To 110
        errorMsg = Error(i)
        If errorMsg <> "" Then
            MsgBox "エラー番号: " & i & vbCrLf & "エラーメッセージ: " & errorMsg
        Else
            MsgBox "エラー番号: " & i & vbCrLf & "エラーメッセージは定義されていません。"
        End If
    Next i
End Sub

このコードでは、エラー番号100から110までのメッセージを取得し、定義されているメッセージのみ表示します。

使用時の注意点

  • 無効なエラー番号に注意

    Error関数は無効なエラー番号や、定義されていないエラー番号に対して空の文字列を返します。エラーハンドリング時に必ずエラーメッセージが取得できるとは限らないため、空のメッセージの場合の処理も考慮する必要があります。

  • ユーザー定義エラーの取り扱い

    カスタムエラー番号を使用する場合、そのエラー番号が他のVBAで定義されているエラー番号と重複しないようにしましょう。通常、50000以上のエラー番号を使用することが推奨されます。

  • エラーメッセージのカスタマイズ

    Error関数のメッセージは標準のエラーのみを対象としているため、特定のエラーに対して独自のメッセージを表示したい場合は、Err.Descriptionを使用するか、カスタムメッセージを追加する必要があります。

まとめ

Error関数は、VBAで発生するエラー番号に対応するエラーメッセージを取得するための便利なツールです。エラー番号だけでは理解しにくいエラー内容を明確にし、エラーハンドリングの精度を高めることができます。定義されていないエラー番号やユーザー定義のエラー番号の取り扱いにも注意しながら、デバッグやトラブルシューティングの際に効果的に活用しましょう。