この記事では、VBAのIsError関数を使ってセルの数式や結果にエラーが発生していないかどうかを判定する方法を、実際のVBAコードも含めて紹介します。
IsError関数はExcelでもお馴染みの関数ですが、ある程度、Excelの関数を使いこなせているユーザー向けの関数かと思います。
VBAにおいても、IsErrorを使うのは脱初心者かつ実用的な活用をし始めた頃でしょう。
では早速、IsError関数を使ったエラー判定のVBAコードを見ていきましょう。
この章では、セルA1とセルA2に入力されている数式のエラーに対して、エラーかどうかを判定するVBAコードを紹介します。なお、セルA1とセルB2の両方のエラーを準備しているのは、異なるエラー種別においても適正に判定することができることを確かめるためです。
IsError(Expression)
IsError関数はエラー判定の結果を、True か False で返します。
Sub Sample()
Dim s1 As String , s2 As String
s1 = IsError(Range(“A1”).Value)
s2 = IsError(Range(“A2”).Value)
MsgBox s1 & vbCrLf & s2
End Sub
この章では、A列に入力されている数式についてセルA1からセルA11まで、順番にエラーが発生していないかどうかを判定するVBAコードを紹介します。判定結果であるエラーのセル数は、最後にメッセージボックスで表示させます。
Sub Sample()
・・・①
Dim i As Long, c As Long, s As String
c = 0
・・・②
For i = 1 To 10
s = IsError(Range(“A” & i).Value)
・・・③
If s = True Then
c = c + 1
Else
End If
Next
・・・④
MsgBox c
End Sub
①まず、下記の変数を宣言します。
i=行数を増やすための変数
c=エラーセルをカウントするための変数
s=IsErrorの返り値を格納するための変数
次に変数cに0を代入します。この変数cは1回の判定処理前に1を加算しますので、初期値は0です。
(エラー発見の都度、1を加算する)
②Forを使って1行目から10行目まで判定を繰り返します。
③Ifを使って、判定結果がTrue(エラーの場合の返り値)の場合、変数cに1を加算します。
④最後にメッセージボックスにエラー時のカウントである変数cの値を表示します。