2012年4月9日月曜日

Excel 2010×2003:FormatConditionsで不具合

VBAからセルに条件付き書式を設定した時の話です。
以下のようなコードでした。説明のため単純にしてありますが、実際はセルによって条件付き書式の内容を変えるという処理でした。そのためセル範囲まとめてではなく、こんな形になってました。

For i = 1 To 10
    Sheet1.Cells(i, "A").FormatConditions.Add Type:=xlExpression, _
        Formula1:="=C" & CStr(i) & "> 0"
    Sheet1.Cells(i, "A").FormatConditions(1).Interior.ColorIndex = 45
Next

Excel 2010で実行した場合、特に問題ないように見えます:


ところが2003で実行するとおかしな結果になりました:


オレンジにならないセルA6の条件付き書式を確認してみました:


なぜかC11を参照しています。 A列を上から見たところ、C1、C3、C5、C7、C9、C11・・・と参照先が1行おきになっていました。
なんでだかはわかりませんがセル位置を相対参照にしていたことが問題なようです。Formula1のところで$をつけるかR1C1形式で絶対参照にすれば、2010と同じ実行結果になりました。

ちなみに相対参照のままの時、実行時にアクティブセルがA1以外だと参照先がさらにズレました。むしろ不具合というならこっちかもしれませんけど、今さら2003の仕様にツッコんでもなーと思ったのでこれ以上は調べませんでしたwとにかく絶対参照にしておけば問題ないみたいでした。

0 件のコメント:

コメントを投稿