スポンサーリンク

【VBA】条件付き書式で数式が無効になる例とその対処法

条件付き書式を 数式で設定 する場合、構文や参照方法を誤ると「無効な数式」としてエラーになったり、適用されなかったりします。
この記事では、よくあるトラブル例とその対処方法を紹介します。


スポンサーリンク

1. セル参照が無効になっている

例:存在しないセルを参照している

Range("A1:A10").FormatConditions.Add _
    Type:=xlExpression, Formula1:="=$Z$9999>100"

→ 実際にはシートに「Z9999」が存在しない場合、数式は無効になります。

👉 対処法

  • 参照範囲が実在するか確認
  • データ範囲外を指定しないようにする

スポンサーリンク

2. 相対参照・絶対参照の誤り

条件付き書式は範囲全体に適用されるため、数式の参照方法が間違っていると意図通りに動きません。

NG例(すべてB2しか見ない)

Formula1:="=$B$2=""未処理"""

OK例(各行のB列を参照)

Formula1:="=$B1=""未処理"""

👉 ポイント

  • 行ごとに判定する → 行番号は相対参照にする
  • 列固定で判定する → 列記号は絶対参照にする

スポンサーリンク

3. 数式の書き方が不適切

典型的なエラー例

  • Formula1:="B1>100"
    → 「=」が抜けているため無効
  • Formula1:="=IF(B1>100,TRUE,FALSE)"
    → 条件付き書式では IF は不要。論理式そのものを記述すればOK。

👉 正しい例

Formula1:="=B1>100"

スポンサーリンク

4. 他シート参照の禁止

条件付き書式は 他シートを参照できません

NG例

Formula1:="=Sheet2!A1>100"

👉 対処法

  • 必要な値を現在のシートにコピーしてから参照
  • VBAでループ処理を使い、別シートを参照して書式設定を行う

5. 空白セルやエラーセルの扱い

条件式に空白やエラー値(#DIV/0! など)が含まれると、数式が無効になる場合があります。

👉 対処法

  • ISNUMBER や ISERROR でラップして安全に判定する

例:数値が100以上かつエラーセルを無視

Formula1:="=AND(ISNUMBER(B1),B1>=100)"

6. まとめ

数式が無効になる典型例と対処法は次のとおりです。

  1. 存在しないセルを参照している → 実在範囲を指定する
  2. 相対/絶対参照が誤っている → 行/列を適切に固定
  3. 数式の書き方が不適切 → 「=」を忘れない、IFは不要
  4. 他シートは参照できない → 値コピーやVBA処理で対応
  5. 空白・エラーセル → ISNUMBER や ISERROR で判定

コメント

タイトルとURLをコピーしました