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

我创build了一个条件格式来改变基于一个单元格的值比较的颜色,但我不知道如何应用这种格式的整个列甚至其他列? (我必须使用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 

提前致谢

不幸的是,Excel 2007/2010没有像早期版本那样广泛的macrosloggingfunction

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

所以我会开始你的代码

 rngCell.FormatConditions.Delete 

然后一旦添加了格式,您可以简单地使用:

 rngCell.Copy rngOut.PasteSpecial xlPasteFormats 

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

要应用到其他列,您可能需要一个不同的公式,因为有不同的偏移量。 为了最小化所需的代码,您可以随时手动将所需的全部格式/条件格式添加到表格标题上方的隐藏行中。 然后,您可以使用表格的代码将所有这些复制到您的表格…

 Range("A1:J1").Copy Range("A3:J100").PasteSpecial xlPasteFormats 

…如果我们假设在第1行添加格式化的行时,您的标题被推下到第2行

尽pipe我在上面的例子中提到了单元格地址,但是我总是build议引用范围名称和使用单元格符号,例如Range(“A1”)是Cells(1,1)。 本专业的Excelvideo详细介绍了使用范围名称来定义表格中的列。 好处是巨大的…如果您的标题行使用范围名称进行定义,则可以在表格上方插入新行,而无需重新编写任何代码