2012-04-24 61 views
2

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

'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

尝试录制宏;) – 2012-04-24 07:11:14

+0

我试过了,但它不起作用。它只能记录下面的脚本:
子Macro2() ' ' Macro2宏 ' ' 范围( “B1”)选择 结束小组 – 2012-04-24 10:42:26

+0

只是好奇。你使用哪种Excel版本? – 2012-04-24 10:43:58

回答

1

遗憾的是,Excel的2007/2010不具有广泛的宏录制功能如前面版本

如果您在应用条件格式时引用其他单元格,一种好方法是将其应用于一个单元格(您知道该如何操作),然后将格式设置复制到列的其余部分;如果你是充绒列,这不应该使你失去其他单元格格,你不妨保持

所以我会

rngCell.FormatConditions.Delete 

然后,一旦格式被添加,你就可以开始你的代码简单地使用:

rngCell.Copy 
rngOut.PasteSpecial xlPasteFormats 

,其中rngOut定义为rngCell启动和充绒到最后一行在表

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

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

...如果我们假设你的头被按下时,行添加格式化行到第2 1

尽管我在上面的例子中提到了单元格地址,但我始终会建议引用范围名称并使用单元格符号,例如范围(“A1”)是单元格(1,1)。使用范围名称来定义表中的列在此expert Excel video中有更详细的介绍。好处是巨大的......如果您的标题行使用范围名称定义,则可以在表格上方插入新行而不必重写任何代码

+0

优秀而专业的答案!现在我可以将这个条件格式应用于整个列。 – 2012-04-25 02:48:54

+0

我还有一个问题,你知道如何实现formatConditions来根据另一个单元格中的单元格值更改单元格颜色。我以前的formatCondtions不是很正确,我知道我需要使用xsCellValue类型,但不知道如何实现规则,如:Cell value> $ D5 – 2012-04-25 05:32:47

相关问题