構文
構文は以下の通りです。
解説
IsError関数は、引数として評価する式(Expression)を取ります。Expressionは、エラー値のチェックを行いたいセルや式を指定します。IsError関数は、式がエラー値を持っている場合にTrue(真)を返し、それ以外の場合はFalse(偽)を返します。エラー値とは、計算結果が不正な値やデータが存在しないなどのエラーを示す値です。
使い方
IsError関数は、主に条件分岐やエラーハンドリングなどの場面で利用されます。具体的な使い方を見てみましょう。
例1: 条件分岐での利用
以下の例では、セルA1に数値が入力されているかどうかを判定しています。
MsgBox "セルA1には数値が入力されていません"
Else
MsgBox "セルA1には数値が入力されています"
End If
この例では、セルA1の値がエラー値である場合に「セルA1には数値が入力されていません」とメッセージボックスが表示されます。そうでない場合は「セルA1には数値が入力されています」とメッセージボックスが表示されます。
例2: エラーハンドリングでの利用
次の例では、ディレクトリ内のファイル数を取得して表示する処理を行っています。ただし、ディレクトリが存在しない場合やアクセス権限のない場合にエラーが発生する可能性があります。IsError関数を使用してエラーハンドリングを行います。
On Error Resume Next
Dim folderPath As String
folderPath = "C:\Documents\Files" '存在しないディレクトリパスを指定
Dim fileCount As Long
fileCount = Application.WorksheetFunction.CountA(Dir(folderPath & "\*"))
If IsError(fileCount) Then
MsgBox "ディレクトリが存在しないかアクセス権限がありません"
Else
MsgBox "ファイル数: " & fileCount
End If
End Sub
この例では、CountFilesというサブルーチン内でエラーハンドリングを行います。On Error Resume Nextステートメントにより、エラーが発生しても処理を継続するようにしています。
folderPathに存在しないディレクトリパスを指定しています。CountA関数を使用してディレクトリ内のファイル数を取得し、fileCountに代入します。
その後、IsError関数を使用してfileCountがエラー値であるかどうかを判定します。エラー値であれば「ディレクトリが存在しないかアクセス権限がありません」とメッセージボックスが表示されます。エラー値でなければ「ファイル数: [ファイル数]」というメッセージボックスが表示されます。
プログラミング例
ここでは、IsError関数のさまざまな活用例をいくつか紹介します。
例1: エラーセルの特定
特定の範囲内にあるエラーセルを特定し、別の処理を行う例です。
Dim rng As Range
Set rng = Range("A1:A10")
Dim cell As Range
For Each cell In rng
If IsError(cell.Value) Then
' エラーセルが見つかった場合の処理
' 例えば、エラーセルの色を変更するなど
cell.Interior.Color = RGB(255, 0, 0) ' 赤色に設定
End If
Next cell
End Sub
この例では、セル範囲A1からA10の中でエラーセルを探し、エラーセルを見つけた場合にそのセルの背景色を赤色に変更しています。
例2: エラーハンドリングの改善
エラーハンドリングを改善するために、IsError関数を利用します。
On Error Resume Next
Dim num1 As Double, num2 As Double, result As Double
num1 = 10
num2 = 0
result = num1 / num2
If Err.Number <> 0 Then
MsgBox "エラーが発生しました: " & Err.Description
Err.Clear
Else
MsgBox "結果: " & result
End If
End Sub
この例では、DivideNumbersというサブルーチン内で2つの数値の割り算を行います。ただし、num2に0を設定しているため、エラーが発生します。
On Error Resume Nextステートメントにより、エラーが発生しても処理を継続します。割り算結果をresultに代入し、IsError関数ではなく、Errオブジェクトを使用してエラーハンドリングを行います。
Err.Numberが0でない場合、つまりエラーが発生した場合には、「エラーが発生しました: [エラーメッセージ]」というメッセージボックスが表示されます。また、Err.Clearによってエラーオブジェクトがクリアされ、次のエラーに備えます。
まとめ
IsError関数は、エラー値のチェックやエラーハンドリングに役立つ重要な関数です。データ処理や自動化を行う際には、IsError関数を上手に活用して効率的なプログラミングを目指してください。