Excel VBAの「IsError 関数」について解説します。
IsError 関数とは
Excel VBA の IsError 関数は、指定した値がエラーかどうかを判定し、Boolean値で結果を返します。エラー値であれば True、それ例外は False が返ります。
IsError 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。
IsError 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
IsError(expression)
引数
引数 | 説明 |
---|---|
expression | 【必須】判定したい値 (式) を指定します |
引数を変数で指定する場合のデータ型は Variant です。
なぜなら「エラー値」は Variant変数のみに代入可能だからです。
戻り値
戻り値 | 説明 |
---|---|
ブール値 (Boolean) | 引数がエラー値の場合 True それ以外は False を返します |
解説(使用例)
IsError 関数は、実行時エラーを直接判定することはできません。主にセルのエラー値やユーザー定義のエラーを判定するために使用されます。
以下、IsError 関数の使用例のサンプルコードです。
IsError関数サンプル1(基本的な例)
IsError の引数 Variant 変数にエラー値などいろいろなデータを代入して結果を確認しましょう。
'■IsError関数サンプル1 (基本的な例)
Sub IsError_Sampl01()
Dim v As Variant
v = CVErr(xlErrNA) '#N/A エラー値を代入
Debug.Print IsError(v) 'True
v = CVErr(99) '独自エラー 99
Debug.Print IsError(v) 'True
v = Range("A1").Value 'セルが #DIV/0! エラー
Debug.Print IsError(v) & Range("A1").Text 'True
v = Null
Debug.Print IsError(v) 'False
v = True
Debug.Print IsError(v) 'False
v = ""
Debug.Print IsError(v) 'False
End Sub
コードを実行したイミディエイト画像がこちらです。
使用した CVErr 関数については次の記事で詳しく解説しています。
2件目は、同じく CVErr 関数で独自エラー番号を引数に設定しているので True が返りました。
11行目(3件目の例)では、引数にセルの値(Value)を変数に代入して確認しています。セルがエラー値だったので True が返っています。
以降の例では、エラー値ではないのですべて False です。
IsError関数サンプル2 (セル範囲のエラー確認例)
指定したセル範囲内にあるセルの値(Value)を IsError 関数ですべて検査し、エラー値だった場合 MsgBox に表示します。検査完了後にエラーが何件あったかを表示します。
'■IsError関数サンプル2 (セル範囲のエラー確認例)
Sub IsError_Sampl02()
Dim cell As Range
Dim count As Long
For Each cell In Range("A1:A10")
If IsError(cell.Value) Then
MsgBox cell.Address & " は " & cell.Text & " エラーです"
count = count + 1
End If
Next cell
MsgBox "エラー件数は " & count & " でした。"
End Sub
エラー値があった場合に表示される MsgBox の例です。
検査完了時に表示される MsgBox でエラー件数を表示します。
おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA IsError 関数は、引数に指定した値がエラー値かどうかを判定し、結果を Boolean値(エラー値の場合 True、それ以外は False)で返します。
IsError関数は、標準のエラー値だけでなく、ユーザー定義のエラーも判定することができます。エラー値を判定し、適切な処理を行うことで、プログラムの安定性を向上させることができます。
ただし、IsError関数では判定できない実行時エラーをハンドリングするには On Errorステートメントを使用する必要があります。詳しくは次の記事をご覧ください。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;