和風スパゲティのレシピ

日本語でコーディングするExcelVBA

セルがエラーかどうか調べる - IsError関数

セルがエラーかどうかを調べる方法を解説します。

IsError関数を使用します。

基本構文

' セルがエラーでないときだけ処理
If IsError(Range("A1").Value) = False Then
    ' ここに正常セルへの処理
End If

解説

セル.Valueに対してIsError関数を使用すると、
セルがエラーになっているかを調べることができます。


エラーであればTrue、エラーでなければFalseを返します。

ストレートな関数のため特に注意点はありません。

WorksheetFunctionのエラーは判定不可

IsError関数はセル値以外にも使用することはできますが、

If IsError(WorksheetFunction.Vlookup(~~)) = False Then

このようにWorksheetFunctionに使用することはできません。


WorksheetFunctionはエラーになった場合にエラー値を返さず、
VBAの実行時エラーとなってしまうためです。

WorksheetFunctionの結果がエラーかを判定したい場合は、
On Error Resume Nextなどを用いて実行時エラーをキャッチします。

On Error Resume Next
結果値 = WorksheetFunction.Vlookup(~~)

' エラーが起きていない場合の処理
If Err.Number = 0 Then

End If

On Error GoTo 0 ' ← 終わったらしっかり戻すこと

 

エラーの種類を調べる場合

起きたエラーが何のエラーかどうか調べるには、
CVErr関数を使用します。

例えば#N/Aかどうか調べるには以下のコードを判定します。

If Range("A1").Value = CVErr(xlErrNA) Then

 
ただしこのコードはいつもと逆で、
セル値がエラーでない場合はVBAの実行時エラーになってしまいます。

実際に判定する場合は、IsError関数でエラーかどうかを判定してから使用してください。

If IsError(Range("A1").Value) Then
    If Range("A1").Value = CVErr(xlErrNA) Then

 
CVErr関数の詳しい仕様についてはこちらの記事をどうぞ。