更新日:、 作成日:

VBA IsError 関数:エラーかどうかを判定する

はじめに

Excel VBA マクロの IsError 関数からエラーかどうかを判定する方法を紹介します。

IsError 関数は、指定した値がエラーかどうかを判定します。

#N/A などのセルのエラーなら True を返します。

CVErr 関数」で作成したエラーなら True を返します。

セルのエラーや独自のエラーを判定したいときに使用します。

エラーを処理するには「エラー処理をする」をご覧ください。

IsError 関数の引数と戻り値

IsError()
がエラーのときは True を返します。それ以外のときは False を返します。

引数「値」判定したい値を指定します。
戻り値の型ブール型 (Boolean)

解説

VBA から発生するエラーの判定はできません。「エラー 13 型が一致しません。」などのエラーを処理するには「エラー処理をする」や「エラー情報を取得する」方法で、エラーをキャッチしたりエラー情報は取得します。

引数「値」がセルのエラー #N/A#VALUE! なら True を返します。「CVErr 関数」でセルのエラーを作成できます。

引数「値」が「CVErr 関数」で作成したエラーなら True を返します。それ以外の値なら False を返します。

セルの数式が誤っているときにエラーが発生しているかや、Variant 型の変数に独自のエラーが代入されているか判定できます。

特定のエラーを判定

特定のセルのエラー #N/A かどうかを判定するには、「CVErr 関数」で作成したエラーと = で比較します。

使用例

IsError 関数の使用例を紹介します。

エラーか判定する

エラーかどうかを判定します。

Dim v As Variant
Dim b As Boolean

v = CVErr(xlErrNA) ' #N/A エラー
b = IsError(v)
Debug.Print(b) ' True

v = CVErr(13) ' エラー 13
b = IsError(v)
Debug.Print(b) ' True

v = Range("A1").Value
b = IsError(v)
Debug.Print(b) ' True、セル A1 がエラーなら

v = Err
b = IsError(v)
Debug.Print(b) ' False

v = 13
b = IsError(v)
Debug.Print(b) ' False

v = ""
b = IsError(v)
Debug.Print(b) ' False

特定のエラーを判定する

CVErr 関数」で作成したエラーと比較するか、「CLng 関数」から数値に変換して、特定のエラーかどうかを判定できます。

Dim v As Variant
Dim b As Boolean

' #N/A のエラーか判定する
v = CVErr(xlErrNA) ' #N/A エラー
b = (v = CVErr(xlErrNA))
Debug.Print(b) ' True

b = (v = CVErr(XlErrValue))
Debug.Print(b) ' False

Dim l As Long
l = CLng(v) ' 2042
b = (l = 2042)
Debug.Print(b) ' True

b = (l = 13)
Debug.Print(b) ' False