Excel VBA – 如何忽略条件格式中的空白单元格
我想突出显示date比今天的dateless的单元格。 但是,在应用条件格式时,将突出显示“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
您可以使用SpecialCells()
types。 第一行是我改变的。
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
不过,你也应该避免使用.Select
。 我将离开如何为读者做一个练习。
只是另外一点:
如果有任何date是由公式生成的,则解决scheme不起作用。
如果要突出显示date常量和date公式,则需要返回原始select(或者通过指定范围来执行相同的操作):
Sheets("Sheet1").Columns("I:I").Select
…并用这样的东西replace条件格式:
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=if(isblank(i1),false,i1<=today())"
(我并不擅长条件格式化,所以当我引用范围中的第一个单元格时,我不太明白为什么它会起作用,但是当我testing它时,它确实是这样做的。)