Categories: VBA

VBAでIsErrorを使ったエラー判定│数式のエラー有無を判定する

この記事では、VBAIsError関数を使ってセルの数式や結果にエラーが発生していないかどうかを判定する方法を、実際のVBAコードも含めて紹介します。

IsError関数はExcelでもお馴染みの関数ですが、ある程度、Excelの関数を使いこなせているユーザー向けの関数かと思います。

VBAにおいても、IsErrorを使うのは脱初心者かつ実用的な活用をし始めた頃でしょう。

では早速、IsError関数を使ったエラー判定のVBAコードを見ていきましょう。

VBA│IsError関数で数式のエラー判定をする

この章では、セルA1とセルA2に入力されている数式のエラーに対して、エラーかどうかを判定するVBAコードを紹介します。なお、セルA1とセルB2の両方のエラーを準備しているのは、異なるエラー種別においても適正に判定することができることを確かめるためです。

基本構文

IsError(Expression)

  • IsError = エラーを判定する関数
  • (Expression) = エラー判定をする対象のセル
    この例では、A1A2です

Expressionは、Range等を用いて指定するセルの範囲です。

IsError関数はエラー判定の結果を、TrueFalse で返します。

Rangeプロパティ

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コードを紹介します。判定結果であるエラーのセル数は、最後にメッセージボックスで表示させます。

列に含まれるエラー数をカウントする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

VBAコード解説

①まず、下記の変数を宣言します。
i=行数を増やすための変数
c=エラーセルをカウントするための変数
s=IsErrorの返り値を格納するための変数

次に変数cに0を代入します。この変数cは1回の判定処理前に1を加算しますので、初期値は0です。
(エラー発見の都度、1を加算する)


②Forを使って1行目から10行目まで判定を繰り返します。


③Ifを使って、判定結果がTrue(エラーの場合の返り値)の場合、変数cに1を加算します。


④最後にメッセージボックスにエラー時のカウントである変数cの値を表示します。

この例のような処理を自動化する場合には、通常、Excelの最終行を求めて、最終行分、判定を繰り返すようにプログラミングするのですが、今回は省略して、予めForで行数を設定しています。

Webs

元事務処理担当者として、プログラミングを活用した業務改善を推進している。プログラマ出身ではない事務職の現場目線で情報を発信。 その他、webs-studio.jpをメインに、複数のブログサイトを立ち上げており、合計で月間10万PVのメディア運営を行っている。 姉妹サイト一覧