更新日:、 作成日:
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
スポンサーリンク