[英]Excel VBA - How to ignore blank cells in conditional formatting
我試圖突出顯示日期小於今天的日期的單元格。 但是,當應用條件格式時,“ 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
只是一點:
如果任何日期由公式產生,則該解決方案不起作用。
如果要突出顯示日期常量和日期公式,則需要返回到原始選擇(或通過分配范圍來執行相同的操作):
Sheets("Sheet1").Columns("I:I").Select
...,然后將條件格式替換為以下內容:
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=if(isblank(i1),false,i1<=today())"
(我不是條件格式專家,所以當您引用范圍中的第一個單元格時,我並不真正理解它為什么起作用,但是在我測試它時它確實起作用。)
您可以使用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
但是,還應避免使用.Select
。 我將把如何做作為練習留給讀者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.