概要

CVErr関数は、Excel VBAでユーザー定義のエラーを生成するための関数です。通常、VBAの標準エラーだけではカバーできないカスタムエラーを作成し、エラーハンドリングの際に活用することができます。この関数は、関数やプロシージャから特定のエラーを示すために用いられます。

構文

CVErr(エラー番号)

パラメータ

  • エラー番号
    エラーコードを指定します。標準のエラーコード(例えば、xlErrDiv0xlErrNA)またはカスタムの数値を使うことができます。

戻り値

指定されたエラー番号に対応するVariant型のエラー値を返します。この戻り値は、エラー処理を行う際に非常に役立ちます。

説明

CVErr関数は、関数やプロシージャ内で発生するカスタムエラーを示すために使われます。通常のエラーとは異なり、この関数で生成されたエラーは、意図的に返すことができるため、より柔軟なエラーハンドリングが可能となります。

  • エラーコードの指定

    Excel VBAでは、標準的なエラーコード(例えば、xlErrDiv0 = 2007、xlErrNA = 2042など)を使用して、具体的なエラーの意味を表現することができます。また、自作のエラーコードも使用可能です。

  • エラー値の処理

    CVErr関数で生成されたエラーは、IsError関数を用いてエラーチェックを行うことができます。これにより、特定のエラーコードに応じた処理を分岐させることが可能です。

使用例

基本的な使用例 - ユーザー定義エラーを返す

Function DivideNumbers(a As Double, b As Double) As Variant
    If b = 0 Then
        ' ゼロでの除算を防ぐため、カスタムエラーを返す
        DivideNumbers = CVErr(xlErrDiv0)
    Else
        DivideNumbers = a / b
    End If

End Function

エラーを確認して処理を分岐させる

Sub CheckDivideError()
    Dim result As Variant

    result = DivideNumbers(10, 0)

    If IsError(result) Then
        MsgBox "エラーが発生しました: " & CStr(result)  ' 結果: エラーコードが表示される
    Else
        MsgBox "計算結果: " & result
    End If
End Sub

自作のエラーコードを使用する

Function CustomErrorTest() As Variant
    ' 独自のエラーコードを返す(例: 9999)
    CustomErrorTest = CVErr(9999)
End Function


Sub TestCustomError()
    Dim result As Variant

    result = CustomErrorTest()

    If IsError(result) Then
        MsgBox "カスタムエラーが発生しました。エラーコード: " & CStr(result)  ' 結果: カスタムエラーコード9999が表示される
    End If
End Sub

備考

  • エラーコードの範囲
    Excelにはいくつかの標準エラーコードが存在しますが、カスタムエラーを生成する場合は、既存のエラーコードと重複しないように注意が必要です。

  • エラーハンドリングの強化
    CVErr関数を使用することで、標準のVBAエラーハンドリングを補完し、より細かいエラーメッセージやアクションを指定することができます。これにより、ユーザーにとってわかりやすいエラーメッセージの提供が可能になります。

  • デバッグと保守性の向上
    ユーザー定義エラーを使用することで、特定の条件下でのエラーの発生原因を迅速に特定でき、デバッグやプログラムの保守性が向上します。