【VBA】条件付き書式の数式で重要なセル参照ルール(相対参照・絶対参照)

条件付き書式をVBAで扱うとき、よくつまずくのが「セル参照のルール」です。
特に 相対参照と絶対参照の違い を理解しておくと、意図通りに条件が適用できます。


1. 相対参照と絶対参照の基本

  • 相対参照(例:A1)
    → 条件付き書式を設定した範囲の 先頭セル基準 で判定される。
    範囲内でセルが移動すると、参照先も変化する。
  • 絶対参照(例:$A$1)
    → 常に固定されたセルを参照する。
    どの行や列でも同じセルを判定基準にできる。
  • 行だけ固定(例:A$1)
    → 列は動くが、行は固定。
  • 列だけ固定(例:$A1)
    → 行は動くが、列は固定。

2. VBAでの指定例(相対参照)

例:「A列が空欄なら行全体を灰色にする」

Sub 条件付き書式_相対参照()
    Dim rng As Range
    Set rng = Range("A2:E20")
    
    rng.FormatConditions.Add _
        Type:=xlExpression, _
        Formula1:="=$A2="""""
    
    rng.FormatConditions(1).Interior.Color = RGB(200, 200, 200)
End Sub

👉 ここでは $A2 として「列は固定、行は相対参照」にしているため、
各行ごとに「A列が空かどうか」を判定します。


3. VBAでの指定例(絶対参照)

例:「セルB1が『締切』ならすべての範囲を黄色にする」

Sub 条件付き書式_絶対参照()
    Dim rng As Range
    Set rng = Range("A2:E20")
    
    rng.FormatConditions.Add _
        Type:=xlExpression, _
        Formula1:="=$B$1=""締切"""
    
    rng.FormatConditions(1).Interior.Color = RGB(255, 255, 150)
End Sub

👉 =$B$1 としているので、範囲全体が「B1セルの値」に依存します。


4. よくあるつまずきポイント

  • $を忘れて相対参照になり、意図しないセルを見てしまう
  • 行だけ固定したいのに全部固定してしまう
  • 範囲の先頭セル基準で式が解釈されることを忘れやすい

5. ポイント整理

  • 相対参照は「行ごと・列ごとの判定」に便利
  • 絶対参照は「全体で1つの基準を参照」するときに便利
  • $ の使い方(列固定・行固定)を意識すると、意図通りの条件付き書式が作れる

6. まとめ

条件付き書式をVBAで活用する際は、数式のセル参照ルールを理解しておくことが重要です。

  • 行ごとに判定 → 相対参照を使う
  • 固定セル基準 → 絶対参照を使う
  • $ を使い分けて意図通りの動きを実現

コメント

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