サイトについて      連絡先   検索

VBA CVErr 関数

はじめに

Excel VBA の CVErr 関数を紹介します。

CVErr 関数は、エラーを作成できます。

自作の関数の戻り値にエラーを設定したいときや、セルの値にエラーの設定や判定するのに使用します。

構文

CVErr(エラー番号)

名前 説明
引数「エラー番号」エラーが設定されているか判定したい値を指定します。
戻り値ブール型 (Boolean)

引数「エラー番号」に次の値を指定してセルのエラーを示せます。

定数 エラー番号 セルのエラー
xlErrDiv02007#DIV/0!
XlErrNA2042#N/A
xlErrName2029#NAME?
XlErrNull2000#NULL!
XlErrNum2036#NUM!
XlErrRef2023#REF!
XlErrValue2015#VALUE!

解説

エラー番号には 0 ~ 65535 までの数値を指定できます。

セルのエラーに「#N/A」や「#VALUE!」などを示す定数が用意されています。

セルのエラー以外に自作のエラーを作成できます。このエラーとは VBA のエラーではなく、仕様と違う操作をしたときなどのシステムエラーのことです。

例えば「A を入力してから B のボタンを押す」という仕様に対して、「先に B のボタンを押した」ときにエラーを発生させるために使用します。この「先に B のボタンを押した」という操作を仕様で 60000 番のエラーにすると決めれば何のエラーが発生したか確認できます。

戻り値を「IsError 関数」に渡すと True が返ります。これでエラーが発生したかどうか判定できます。

使用例


Dim v As Variant

v = CVErr(1)
Debug.Print (v) ' エラー 1

v = CVErr(65536) ' 本当のエラー発生

Cells(1, 1).Value = CVErr(xlErrNA) ' セル A1 に #N/A を設定

' セル A1 が #N/A のときに処理をする
If Cells(1, 1).Value = CVErr(xlErrNA) Then
    Debug.Print ("#N/A")
End If

関数の戻り値が正常かどうかの判定にエラーを使用できます。


Sub 実行()
    Dim v As Variant
    v = Tips(0)
    
    If IsError(v) = False Then
        ' 正常な処理
    Else
        Debug.Print (v) ' エラー 60000
    End If
End Sub

Function Tips(ByVal i As Integer) As Variant
    If i = 100 Then
        Tips = "正常な処理"
    Else
        Tips = CVErr(60000) ' 操作が間違っている
    End If
End Function

関連ページ