概要

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 NextOn Error GoToなどのエラーハンドリング手法と併用して使用することが推奨されます。

  • 数式の結果確認に適用

    Excelのシート関数など、計算結果がエラーになる可能性がある場合にも便利です。特にデータの整合性チェックや入力値の確認に役立ちます。

まとめ

IsError関数は、VBAでエラーの判定を行うための非常に便利なツールです。特に計算結果や関数の戻り値がエラーであるかどうかを確認する際に役立ちます。エラー発生時にプログラムの動作を適切に制御するための手段として、エラーハンドリングと併せて使用することで、より安全で信頼性の高いコードを実現することができます。