概要
IsError
関数は、VBAで指定した値がエラーかどうかを判定するために使用される関数です。エラーとは、#DIV/0!
や#VALUE!
などのExcel特有のエラー値を指します。この関数を使用することで、計算結果や関数の戻り値がエラーかどうかを事前に確認し、エラーハンドリングを適切に行うことができます。エラーの発生を未然に防ぎ、プログラムの信頼性を高めるために非常に有用です。
構文
IsError(expression)
パラメータ
-
expression
判定する対象の式、変数、または関数の戻り値を指定します。この式がエラーかどうかを
IsError
関数がチェックします。
戻り値
-
True:指定した式がエラーの場合。
-
False:指定した式がエラーでない場合。
使用例
基本的な使用例 - 計算結果のエラーチェック
以下の例では、IsError
関数を使用して、計算結果がエラーかどうかを判定し、その結果をメッセージボックスで表示します。
Sub CheckError()
Dim result As Variant
Dim divisor As Integer
' 分母を0に設定してエラーを発生させる
divisor = 0
' 計算を試みる
On Error Resume Next
result = 10 / divisor
On Error GoTo 0
' エラーチェック
If IsError(result) Then
MsgBox "計算結果はエラーです。"
Else
MsgBox "計算結果は: " & result
End If
End Sub
この例では、divisor
が0であるため、計算結果が#DIV/0!
エラーになります。IsError
関数がこれを判定し、エラーメッセージを表示します。
関数の戻り値がエラーかどうかを確認する
IsError
関数は、他の関数の結果がエラーかどうかを確認するのにも役立ちます。以下の例では、VLookup
関数の結果をチェックしています。
Sub CheckFunctionError()
Dim lookupValue As Variant
Dim result As Variant
' 検索する値を設定
lookupValue = "NotExist"
' VLookup関数を使用して値を検索(存在しない値を検索してエラーを発生させる)
On Error Resume Next
result = Application.WorksheetFunction.VLookup(lookupValue, Range("A1:B10"), 2, False)
On Error GoTo 0
' エラーチェック
If IsError(result) Then
MsgBox "VLookup関数の結果はエラーです。"
Else
MsgBox "VLookupの結果は: " & result
End If
End Sub
この例では、VLookup
関数が指定した値を見つけられないためエラーになります。IsError
関数を使って、このエラーを判定し、適切なメッセージを表示します。
配列内のエラー値を判定する
IsError
関数は配列内のエラーを個別にチェックすることもできます。以下のコードは、配列の各要素をチェックし、エラーがあるかどうかを確認します。
Sub CheckArrayErrors()
Dim dataArray As Variant
Dim i As Integer
' エラーを含む配列を作成
dataArray = Array(1, 2, CVErr(xlErrDiv0), 4, CVErr(xlErrValue))
' 配列内のエラーチェック
For i = LBound(dataArray) To UBound(dataArray)
If IsError(dataArray(i)) Then
MsgBox "配列の " & i + 1 & " 番目の要素はエラーです。"
Else
MsgBox "配列の " & i + 1 & " 番目の要素は: " & dataArray(i)
End If
Next i
End Sub
この例では、CVErr
関数を使って配列にエラー値を含めています。IsError
関数は各要素を判定し、エラーがあるかどうかを確認します。
使用時の注意点
-
エラーハンドリングの併用
IsError
関数はエラーが発生したことを検知するものであり、エラー自体を防ぐわけではありません。そのため、On Error Resume Next
やOn Error GoTo
などのエラーハンドリング手法と併用して使用することが推奨されます。 -
数式の結果確認に適用
Excelのシート関数など、計算結果がエラーになる可能性がある場合にも便利です。特にデータの整合性チェックや入力値の確認に役立ちます。
まとめ
IsError
関数は、VBAでエラーの判定を行うための非常に便利なツールです。特に計算結果や関数の戻り値がエラーであるかどうかを確認する際に役立ちます。エラー発生時にプログラムの動作を適切に制御するための手段として、エラーハンドリングと併せて使用することで、より安全で信頼性の高いコードを実現することができます。