構文
CVErr(Expression) As Variant
Expression・・・エラーの種類を判別する0 ~ 65535の数値
戻り値 ・・・・・Variant型 エラー (0 ~ 65535の数値)で返却。
戻り値 ・・・・・Variant型 エラー (0 ~ 65535の数値)で返却。
Expressionに指定した内容のエラーの種類を判別します。
セルのエラー(#REF や#N/Aの判別)が可能です。(定数で返却)
それ以外に自作のエラーを作成する事も可能です。
CVErr関数のサンプルコード
Public Sub sample_CVErr() '■セルC4が「#DIV/0」の場合 Debug.Print CVErr(Range("C4")) 'エラー 2007 '■セルC4が「#N/A」の場合 Debug.Print CVErr(Range("C4")) 'エラー 2042 '■セルC4が「#REF!」の場合 Debug.Print CVErr(Range("C4")) 'エラー 2023 '■セルA2が「""」の場合はエラー 0が返却 Debug.Print CVErr(Range("A2")) 'エラー 0 '■セルB3が「"abc"」の場合は数値以外をしている為エラーが発生 Debug.Print CVErr(Cells(3, 2)) '実行時エラー13 型が一致しません '■アクティブセルが「1」の場合 エラー1が返却(自作のエラーの設定となる) Debug.Print CVErr(ActiveCell.Value) 'エラー 1 End Sub
注意点
- 返却値のデータ型はVariant型で設定する必要があります。
String型やLong型へ返却した際はエラーが発生します。
実行時エラー13
型が一致しません
型が一致しません
- Variant型以外で設定する場合は CStr関数 や CLng関数 で明示的に型変換すれば問題ありません。
Dim str As String str = CStr(CVErr(1)) 'エラー1 Dim lng As long lng = CStr(CVErr(1)) '1
- val = CVErr(1)等とVariant型の変数に入れた後は IsError関数で val がエラーかどうか判別可能です。
エラー値の種類(定数)
定数 | エラー番号 | セルのエラー値 | 内容 | 例 |
xlErrDiv0 | 2007 | #DIV/0! | 0除算エラー | =100/0 |
XlErrNA | 2042 | #N/A | 値が存在しない | VLOOKUP等 |
xlErrName | 2029 | #NAME? | 関数名やセル範囲などの名称が不正 | SUMをSAMU等と間違って記載 |
XlErrNull | 2000 | #NULL! | セルの指定方法が不正 | =SUM(A1:A3 C1:C3)等の指定間違い |
XlErrNum | 2036 | #NUM! | 数値が大きすぎる/小さすぎる | =10^309 |
XlErrRef | 2023 | #REF! | セル参照不正 | =A1*B1とした後B列を削除し、B1が参照できなくなった場合 |
XlErrValue | 2015 | #VALUE! | 不適切なデータが入力された | =A1*B1でA1は数値だがB1は文字列の場合 |
2019?からは下記の定数も追加されています。(XlCVError列挙に定義)
xlErrGettingData | 2043 |
xlErrSpill | 2045 |
xlErrConnect | 2046 |
xlErrBlocked | 2047 |
xlErrUnknown | 2048 |
xlErrField | 2049 |
xlErrCalc | 2050 |
関連記事
数値データかどうか判断する【IsNumeric関数】【ExcelVBA】
日付データかどうか判断する【IsDate関数】【ExcelVBA】
時刻データかどうか判断する【IsDate関数応用】【ExcelVBA】
配列かどうか調べる【IsArray関数】【ExcelVBA】
Nullデータかどうか判断する【IsNull関数】【ExcelVBA】
Emptyデータかどうか判断する【IsEmpty関数】【ExcelVBA】
セルの値がエラーかどうか判断する【IsError関数】【ExcelVBA】
コメント