如何使用excel宏将条件格式应用于多个列

时间:2012-04-24 06:40:17

标签: excel excel-vba vba

我创建了一个条件格式,根据一个单元格的值比较更改颜色,但我不知道如何将这种格式应用于整个列甚至其他列? (我是否必须使用for循环来设置所有单元格的格式?)

'add conditionalFormating for one cell.
 Set rngCell = Cells(6, 7)
 Set objCF = rngCell.FormatConditions.Add _
            (Type:=xlExpression, _
            Formula1:="=" & rngCell.Address & " > " & rngCell.offset(, -3).Address)
'set formats for new CF

With objCF
    .Font.ColorIndex = 26
    .Interior.ColorIndex = 19
End With

提前致谢

1 个答案:

答案 0 :(得分:1)

不幸的是,Excel 2007/2010没有像早期版本那样广泛的宏记录功能

如果在应用条件格式时引用其他单元格,一个好方法是将它应用于一个单元格(您知道该怎么做),然后将格式复制到列的其余部分;如果你填写一个列,这不应该导致你丢失你可能希望保留的其他单元格格式

所以我会用

开始你的代码
rngCell.FormatConditions.Delete

然后添加格式后,您只需使用:

rngCell.Copy
rngOut.PasteSpecial xlPasteFormats

,其中rngOut被定义为以rngCell开头并填充到表格的最后一行

要应用于其他列,您可能需要不同的公式,因为存在不同的偏移量。为了最大限度地减少所需的代码,您可以随时手动将所需的全部格式/条件格式添加到表格标题上方的隐藏行中。然后,您可以使用表单代码...

将所有这些复制到您的表中
Range("A1:J1").Copy
Range("A3:J100").PasteSpecial xlPasteFormats

...如果我们假设您在第1行添加格式化行时将标题下推到第2行

虽然我在上面的例子中提到了单元格地址,但我总是建议引用范围名称并使用单元格表示法,例如范围(“A1”)是单元格(1,1)。在expert Excel video中更详细地介绍了使用范围名称来定义表中的列。好处是巨大的...如果您的标题行使用范围名称定义,您可以在表格上方插入新行而无需重新编写任何代码