条件付き書式を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で活用する際は、数式のセル参照ルールを理解しておくことが重要です。
- 行ごとに判定 → 相対参照を使う
- 固定セル基準 → 絶対参照を使う
$
を使い分けて意図通りの動きを実現
コメント