概要

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.DescriptionErr.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をうまく活用して、よりわかりやすいエラーハンドリングを実現しましょう。