2012年9月5日水曜日

vba条件書式の罠

現象:vbaで条件書式を追加したら、訳がわからない条件が追加される、Excel2007
下のコードで「C1」セルに、自分自身がエラーの場合、背景色を変える条件書式を追加したところ
Sub test()
    Sheet1.Range("C1").FormatConditions.Delete
    Sheet1.Range("C1").FormatConditions.Add Type:=xlExpression, Formula1:="=ISERROR(C1)"
    Sheet1.Range("C1").FormatConditions(1).Interior.ColorIndex = 38
End Sub
実行後、出来た数式を見てみると、なんだこりゃ~?!「ISERROR(C1)」と指定したのに、「XFD1」とはなんだ?!!



試しに絶対参照の「ISERROR($C$1)」にしてみたら、治った(当たり前だ)。でも絶対参照だとソートとかしたら大変なことになるので...
まぁ、最後はこうして治ったけど、なんか腑に落ちないな~
Sub test()
    Sheet1.Activate
    Sheet1.Range("C1").Select
    Sheet1.Range("C1").FormatConditions.Delete
    Sheet1.Range("C1").FormatConditions.Add Type:=xlExpression, Formula1:="=ISERROR(C1)"
    Sheet1.Range("C1").FormatConditions(1).Interior.ColorIndex = 38
End Sub

1 件のコメント:

  1. EXCELをC1R1参照モードにして、条件書式の数式を"=ISERROR(CR)"にしても出来ました。
    CRってセル「自分自身」を参照することが出来ます。
    C[1]R[1]はOFFSET(1,1)と同じ意味です。

    返信削除