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