セルがエラーかどうかを調べる方法を解説します。
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関数の詳しい仕様についてはこちらの記事をどうぞ。