2015年4月13日月曜日

Excel 2013/2010:.xlsのFormatConditions.Add

以下はExcel 2003の頃に.xlsファイルへ書いたプロシージャの例です。A~C列に対して、同じ行のD列のセルが1の場合にセルが黄色になるという条件付き書式を設定しています。

With Sheet1
     With .Columns("A:C")
          .FormatConditions.Delete
          .FormatConditions.Add Type:=xlExpression, Formula1:="=RC4=1"
          .FormatConditions(1).Interior.Color = vbYellow
     End With
End With

このプロシージャはWindows 7上のExcel 2010でもWindows 8.1上のExcel 2013でも動作します。


ところがこのファイルを.xlsm形式で保存し直したところ、上のプロシージャを実行してもセルの色が変わらなくなってしまいました。


どうもFormula1のところの反映のされ方が.xlsと違うようです。

.xls上で実行した場合:


一方、.xlsm上で実行した場合:


Formula1のところを以下のように修正したら当然ながら直りました。

With Sheet1
     With .Columns("A:C")
          .FormatConditions.Delete
          .FormatConditions.Add Type:=xlExpression, Formula1:="=$D1=1"
          .FormatConditions(1).Interior.Color = vbYellow
     End With
End With

こんな落とし穴があったとは。

0 件のコメント:

コメントを投稿