簡體   English   中英

Excel VBA-如何在條件格式中忽略空白單元格

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM