VBAで条件付き書式が突然エラーになる

LWP | VBAで条件付き書式が突然エラーになる

VBAで条件付き書式が突然エラーになる

A1形式とR1C1形式の罠――追加成功だけで判断しない

Copyright © 2026 LWP 山中 一弘

本資料は、出典を明記いただければ、商用・非商用を問わず、ご自由に複製・改変・再配布していただけます。なお、著作権表示は改変せず、そのまま記載してご利用くださいますようお願いいたします。

記事要約

VBAで条件付き書式を追加するときは、条件式だけでなく、Excelの参照形式と適用先の基準セルを確認します。追加に成功しても、意図したセルに色が付くとは限りません。

シャケもんとアユさんが、色を付ける範囲と判定するセル、A1形式とR1C1形式、4条件の実測結果、現在の形式へ式を合わせる方法を順に確かめます。通常セルの数式設定を知っている方を対象に、短い条件式を使って仕組みを追います。

検証例は、A2が「対象」、A3が「対象外」、適用先がB2:C3です。意図する結果はB2・C2が黄色、B3・C3が白。検証環境はWindowsのExcel 16.0 Build 20326で、2026年9月9日に専用ブックからCOM経由で確認しました。

1 色を付ける場所と、判定する場所

条件付き書式には、書式を付ける範囲と、条件を調べる式があります。ここではB列とC列を塗り分けますが、判定に使う値は同じ行のA列にあります。

適用先B2:C3のうち、A2が対象なのでB2とC2を黄色にし、A3が対象外なのでB3とC3を白のままにする。条件式はA列固定・行相対の参照

図1|A列は判定用。色を付けるのはB2:C3のうち条件が真になるセル。

2 同じ条件を、二つの記法で表す

適用先の左上がB2なら、同じ行のA列を参照する表現は、A1形式では $A2、R1C1形式では RC1 です。開始行を変える場合も、列固定・行相対という条件の意味を保ちます。

基準セルB2ではA1形式の$A2とR1C1形式のRC1が同じ行のA列を表し、B10ではA1側が$A10になる。B2基準で$A3を指定すると判定が1行ずれる

図2|今回の例ではB2とB10の両方を検証。参照形式を合わせることと、基準セルを合わせることは別の確認。

3 追加できても、正しいとは限らない

通常セルではFormulaとFormulaR1C1を使い分けられます。一方、FormatConditions.Addの条件式はFormula1へ渡します。今回の検証では、現在の参照形式と渡す式の組み合わせによって、追加の成否と着色結果が変わりました。

A1設定とA1式、R1C1設定とR1C1式は追加成功でB2黄・B3白。A1設定にR1C1式を渡すと追加成功でも両方白。R1C1設定にA1式を渡すと追加失敗となった実測表

図3|本環境での実測。RC1はA1記法の列RC・行1としても読めるため、形式不一致が必ず構文エラーになるとは限らない。内部パーサを解析した結果ではない。

4 設定は変えず、渡す式を合わせる

短い条件式なら、内部ではR1C1形式で管理し、A1設定のときだけConvertFormulaで変換できます。RelativeToには適用先の左上セルを渡し、相対・絶対参照の種類を保つためToAbsoluteは省略します。

R1C1形式で管理する条件式を、現在がA1設定ならB2を基準にConvertFormulaで変換し、R1C1設定ならそのままFormula1へ渡す。追加後は保存式と対象・対象外の行の色を確認する

図4|Application.ReferenceStyleは読み取るだけ。ConvertFormulaには数式255文字の制限があるため、長い式へ無条件に拡張しない。

まとめ

条件付き書式では、「条件の意味」「相対参照の基準」「実行時に渡す参照形式」を揃えます。追加の成否だけで終わらず、保存されたFormula1と、対象行・対象外の行の実際の色まで確かめます。

短い式が少数なら、A1用とR1C1用の式を分ける方法も実用的です。式を一つにまとめたい場合は、図4の変換方式を検討できます。一時的にA1設定へ変える方法は既存コードの暫定対応になりますが、Application全体の状態を変えるため、エラー時も元の設定へ戻す必要があります。

既存ルールの全削除は、参照形式の問題とは別の判断です。ほかの条件付き書式がある場合は、変更対象、優先順位、StopIfTrueも確認します。付属のVBA例は新しいブックを作るため、既存ルールの全削除を行いません。

付属サンプル

  • 条件付き書式_検証例.xlsx:今回COM経由で作成した、B2・B10を基準とする条件付き書式の例。

  • 条件付き書式サンプル.bas:新しいブックに短い条件式を追加するVBA例。参照形式は変更しません。

  • 条件付き書式サンプル_UTF8.txt:同じVBAコードの閲覧・コピー用。

  • 再現手順.md:配置、実行方法、期待する色、確認範囲と制限。

出典メモ

元ネタ「VBAで条件付き書式が突然エラーになる――A1形式とR1C1形式の罠」の本文と2026年9月7日追補をもとに構成しました。過去の障害が起きた実ブックは調査していません。記事では同型の条件を専用ブックで再現した結果を示しています。

2026年9月9日の検証はWindows、Excel 16.0 Build 20326、PowerShell COMからの呼び出しです。参照形式と式の4組み合わせ、B2・B10基準での変換と着色、1行ずれの式を確認しました。COM例外をVBAのErr.Numberへ置き換えてはいません。付属VBAの同等の処理をCOMで確認しており、VBAマクロ自体の実行は今回行っていません。

R1C1設定で追加した条件式も、本環境で読み出したFormula1はA1表記でした。保存式の取得表記だけから、追加時に渡す式の受け入れ方を判断しないでください。Excelの版・言語や複雑な既存ルールでの挙動を、本例だけで保証するものではありません。

参考リンク

公式資料確認日:2026年9月9日。画像はLWPの人物参照と口調基準を使い、Codex内蔵画像生成で制作しました。