【VBA入門】数式がエラーかどうかを判定する方法|HasFormulaとIsErrorの組み合わせ活用術

Excelでは、計算式(数式)を入力した際に、意図しないエラー(例:#DIV/0!#VALUE!)が表示されることがあります。
VBAで処理を自動化する際、こうしたエラーが存在するかを事前に判定しておくことは極めて重要です。

この記事では、セルに入力されている数式がエラーかどうかをVBAで確認する方法について、分かりやすくご紹介いたします。


目次

数式のエラー判定に使うVBAコード

Sub CheckFormulaError()
    Dim targetCell As Range
    Set targetCell = Range("E3")
    
    If targetCell.HasFormula = True Then
        If IsError(targetCell.Value) = True Then
            MsgBox "セル " & targetCell.Address & " の数式はエラーになっています。"
        Else
            MsgBox "セル " & targetCell.Address & " の数式は正常に計算されています。"
        End If
    Else
        MsgBox "セル " & targetCell.Address & " には数式が入力されていません。"
    End If
End Sub

解説:プロパティと関数の意味

  • HasFormula
     セルに = から始まる数式が入力されているかどうかを判定します。ブール型(True / False)を返します。
  • IsError
     対象となる値がExcelのエラー値(#N/A, #DIV/0!, #VALUE!など)かどうかを判定する関数です。

この2つを組み合わせることで、**「数式があるか」→「その結果がエラーか」**という段階的なチェックが実現できます。


使用例:なぜエラー判定が重要なのか?

以下のような状況では、エラー判定が欠かせません。

  • マクロ実行中に #REF!#DIV/0! が原因で処理が停止してしまうことを防ぎたいとき
  • 計算結果の異常を事前にユーザーに通知したいとき
  • 数式エラーを一覧化してログに記録したいとき

まとめ|数式の「存在」と「正しさ」をVBAで確実にチェック

Excel VBAで自動処理を構築する際、セルに数式が設定されている場合、その数式が正しく計算できているかどうかを確認することは非常に重要です。

  • .HasFormula プロパティで、セルに数式があるかを確認
  • IsError(.Value) 関数で、その結果がエラーかどうかを確認

このように段階的にチェックすることで、予期せぬ停止や処理ミスを未然に防ぎ、信頼性の高いマクロ処理が実現できます。

日常的なExcel業務でも、数式エラーの見逃しによる集計ミスはよく発生します。VBAでの自動チェックを取り入れることで、作業の品質を大きく向上させることができるでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次