見出し画像

セルのエラーを判定する

 Excel VBAでセルのエラーを判定するには、主に以下の2つの方法があります。

  1. IsError関数を使う

 IsError関数は、引数として渡された値がエラー値かどうかを判定します。 
 エラー値とは、#DIV/0!、#NAME?、#VALUE!などのような、Excelで計算できない値のことを指します。

VBA
If IsError(セル) Then
' セルがエラー値の場合の処理
Else
' セルがエラー値ではない場合の処理
End If
コードは注意してご使用ください。

  1. Application.WorksheetFunction.CVErr関数を使う

 Application.WorksheetFunction.CVErr関数は、引数として渡されたセルのエラーの種類を判定します。
 判定できるエラーの種類は、以下の表の通りです。

エラー値 説明
xlErrDiv 除算エラー
xlErrRef 参照エラー
xlErrNA NAエラー
xlErrName 名前エラー
xlErrNum 数値エラー
xlErrValue 値エラー
xlErrNull 空セルエラー
xlErrInf 無限エラー
xlErrCircular 循環参照エラー
xlErrIncomp 不完全な式エラー
xlErrFunc 関数エラー
xlErrContinue 続行エラー
xlErrAutoname 自動命名エラー
xlErrCalc 計算エラー
xlErrSheet ワークシートエラー
xlErrForm フォームエラー
xlErrObj オブジェクトエラー
xlErrPict 図エラー
xlErrExt 外部エラー
xlErrNRef 数式参照エラー
xlErrSRef 文字列参照エラー
xlErrDRef データ参照エラー
xlErrBRef ブック参照エラー
xlErrUncalc 計算されていないエラー
xlErrNotAval 利用不可エラー
xlErrNumFrmt 数値書式エラー
xlErrFrmt 書式エラー
xlErrValFrmt 値書式エラー
xlErrInvFrmt 無効な書式エラー
xlErrDdeCalc DDE計算エラー
xlErrDDEFail DDE失敗エラー
xlErrDDEComm DDE通信エラー
xlErrDDEApp DDEアプリケーションエラー
xlErrDDEFmt DDE書式エラー
xlErrDDEUnrec DDE未認識エラー
xlErrDDETerm DDE終了エラー
xlErrComFail 通信エラー
xlErrNotConn 接続エラー
xlErrFile ファイルエラー
xlErrUsr ユーザー定義エラー
xlErrDat データエラー
xlErrStad スタックエラー
xlErrMem メモリエラー
xlErrUnkwn 未知のエラー

Google スプレッドシートにエクスポート
VBA
Dim errorType As XlCVError

errorType = Application.WorksheetFunction.CVErr(セル)

Select Case errorType
Case xlErrDiv
' 除算エラーの場合の処理
Case xlErrRef
' 参照エラーの場合の処理
' 以下省略
End Select
コードは注意してご使用ください。

補足

 IsError関数の方が、Application.WorksheetFunction.CVErr関数よりも処理速度が速いです。
 Application.WorksheetFunction.CVErr関数を使用する場合は、Excelのタイプライブラリへの参照設定が必要となります。

参考情報

【Excel VBA】 セルの数式結果がエラーなっているかを判定して、処理を分岐する方法:https://community.adobe.com/t5/acrobat-sdk-discussions/vba-macros-accessing-acrobat-dc-pro-reference-library-stopped-working/m-p/12897014
VBAでセルのエラーの種類を判定する(CVErr + XlCVError 列挙型):https://qiita.com/muramoto_jp/items/4ba28788a6859eabbf99
セルのエラー値 - Microsoft Learn:https://community.fabric.microsoft.com/t5/Desktop/DataFormat-Error-Invalid-cell-value-N-A/m-p/627750

この記事が気に入ったらサポートをしてみませんか?