2

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

提前致谢

4

1 回答 1

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 行

尽管我在上面的示例中提到了单元格地址,但我始终建议参考范围名称并使用单元格表示法,例如 Range("A1") 是 Cells(1, 1)。在这个Excel 专家视频中更详细地介绍了使用范围名称来定义表中的列。好处是巨大的...如果您的标题行是用范围名称定义的,您可以在表格上方插入一个新行,而无需重新编写任何代码

于 2012-04-24T11:01:07.053 回答