条件付き書式の計算式と適用先範囲
通常のExcel操作による条件付き書式も同じなのですが、VBAで書いているときに疑問が出たので、VBAで質問させていただきます。
図のようにA列とB列の値を比較し、A列とB列の値が同じでない場合、つまり「A列-B列」の値が0でないセルに赤い色をつけることにしました。A列が正で、B列が違っている場合色をつける、という考えかたの処理です。
不思議なのは、手動で条件付き書式画面からやっても、下のコードのVBAでやっても「--A」のところのように、比較式を「"=$A2-$B2<>0"」と、2行目で行っているだけ(比較はここだけ)なのです。
しかし実行結果は、A列とB列の値が同じではない行すべてのB列に色がついています。
B列のセルの同じ行のA列と値が異なる場合、赤い色をセルにつけるのが目的なので、結果としてはこのコード(条件付き書式)は正しく動作しています。
質問は、比較式が「--A」のところ=2行目にしかないのに、なぜ3行目~20行目も同様の効果が効いているのでしょうか。
この挿入している効果は条件付き書式であるため、B列のセル上の値を左の行(A列)と合致させると、ちゃんと赤い色は消えてくれます。
この謎が解けません。
----------------------
Sub 左列と異なる値は赤に()
'条件書式を挿入
With ActiveSheet
Range("B2:B20").Select
With Selection
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=$A2-$B2<>0" ' --A
.FormatConditions(1).Interior.Color = RGB(255, 200, 200)
End With
Range("A1").Select
End With
End Sub
お礼
ありがとうございました。