我创建了一个条件格式,根据一个单元格的值比较更改颜色,但我不知道如何将这种格式应用于整个列甚至其他列? (我是否必须使用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
提前致谢
答案 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中更详细地介绍了使用范围名称来定义表中的列。好处是巨大的...如果您的标题行使用范围名称定义,您可以在表格上方插入新行而无需重新编写任何代码