我正在尝试突出显示日期少于今天日期的单元格。但是,在应用条件格式时,会突出显示“ALL”空白单元格。我知道指定范围(I2:I200),但报告每天运行,可以包含1到200+。这就是我需要格式化整个列的原因。
Sheets("Sheet1").Columns("I:I").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLessEqual, Formula1:="=today()"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0.399945066682943
End With
Selection.FormatConditions(1).StopIfTrue = False
答案 0 :(得分:2)
还有一点:
如果公式生成任何日期,则解决方案无效。
如果要突出显示日期常量和日期公式,则需要返回原始选择(或通过指定范围执行相同操作):
Sheets("Sheet1").Columns("I:I").Select
...并用以下内容替换条件格式:
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=if(isblank(i1),false,i1<=today())"
(我不是条件格式的专家,所以当你引用范围中的第一个单元格时,我并不能理解为什么它会起作用,但是当我测试它时它就会这样做。)
答案 1 :(得分:1)
您可以使用SpecialCells()
类型。第一行是我改变了。
Sheets("Sheet1").Columns("I:I").SpecialCells(xlCellTypeConstants).Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLessEqual, Formula1:="=today()"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0.399945066682943
End With
Selection.FormatConditions(1).StopIfTrue = False
但是,您还应该avoid using .Select
。我将留下如何做到这一点作为读者的练习。