概要
Err.Description
関数は、VBA(Visual Basic for Applications)でエラーハンドリングを行う際に、エラーの詳細なメッセージを取得するために使用されるプロパティです。この関数を使うことで、発生したエラーの原因を特定し、ユーザーにわかりやすいエラーメッセージを表示することができます。エラーメッセージの取得は、デバッグや問題解決の際に非常に重要です。
構文
Err.Description
はプロパティとして使用され、以下のようにアクセスします。
Dim errorMessage As String
errorMessage = Err.Description
使用方法
基本的な使い方
Err.Description
は通常、On Error
ステートメントと共に使用され、エラー発生時にエラーハンドリングルーチンに制御が移ると、Err.Description
を使ってエラーメッセージを取得します。
Sub SampleErrDescription()
On Error GoTo ErrorHandler ' エラーハンドラーに移動する設定
' 故意にゼロ除算エラーを発生させる
Dim x As Integer
x = 1 / 0
Exit Sub ' 正常終了時はエラーハンドラーを飛ばす
ErrorHandler:
' エラーメッセージを表示
MsgBox "エラーが発生しました: " & Err.Description
End Sub
この例では、ゼロ除算エラーが発生した際に、Err.Description
がエラーメッセージ「Division by zero」を返し、それがメッセージボックスに表示されます。
応用例 - ログへの記録
エラーハンドリングの一環として、エラーメッセージをログファイルに記録することも可能です。これにより、エラー発生時の状況を後で確認することができ、デバッグが容易になります。
Sub LogErrorToTextFile()
On Error GoTo ErrorHandler
' 存在しないファイルを開いてエラーを発生させる
Open "C:\nonexistentfile.txt" For Input As #1
Exit Sub
ErrorHandler:
' エラーメッセージをテキストファイルに記録
Dim fileNum As Integer
fileNum = FreeFile
Open "C:\error_log.txt" For Append As #fileNum
Print #fileNum, "エラー番号: " & Err.Number & " - " & Err.Description
Close #fileNum
MsgBox "エラーが発生し、ログに記録されました。"
End Sub
エラー番号と組み合わせて使用
Err.Description
はErr.Number
と組み合わせることで、エラーの番号とその説明を同時に取得できます。これにより、より詳細なエラーレポートを作成できます。
Sub ErrorWithNumber()
On Error GoTo ErrorHandler
' 存在しないシートを参照してエラーを発生
Sheets("NonExistentSheet").Select
Exit Sub
ErrorHandler:
MsgBox "エラー番号: " & Err.Number & vbCrLf & "エラーメッセージ: " & Err.Description
End Sub
この例では、存在しないシートにアクセスしようとした際に、該当するエラー番号とそのメッセージが表示されます。
備考
Err.Description
はエラーが発生していない場合には空の文字列を返します。Err.Clear
を使用すると、エラーの状態をリセットし、Err.Description
の内容もクリアされます。- 複数のエラーが発生する場合、直前のエラーのみが
Err.Description
に格納されます。 エラー発生時に適切なメッセージを表示することは、ユーザーへの理解を促し、システムの信頼性を向上させるために重要です。Err.Description
をうまく活用して、よりわかりやすいエラーハンドリングを実現しましょう。