在Excel中使用date值来应用条件格式与VBA

我正在创build一个Excel表格,可以显示客户何时付款以及何时迟到。 在一位朋友的帮助下,我能够想出一个公式,通过突出显示红色的单元格,告诉我们客户是否已经过期。

据我所知,没有办法获得条件格式来改变空白单元格说“晚”,所以我build议尝试VBA。

我已经能够改变颜色,并添加我需要的话,但如何让VBA检查date,如条件格式公式?

这里是公式和我在我的VBA表中:

=AND(ISBLANK(B1),NOT(ISBLANK(B$1)),NOT(ISBLANK($A1)),DATE(YEAR($A1),MONTH($A1),DAY(B$2))<TODAY(),B$2<TODAY()) 

VBA

 Const FORMATTED_RANGE As String = "$B:$ZY" Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range(FORMATTED_RANGE)) Is Nothing Then Exit Sub Dim cellColor As Long Application.EnableEvents = False Select Case Len(Target.Value) Case ISBLANK Target.Value = "LATE" Target.Interior.Color = vbRed Case Is <> 0 Target.Value = "PAID" Target.Interior.ColorIndex = 10 End Select Application.EnableEvents = True End Sub 

我使用了一些我在网上find的代码(谢谢Rolf Jaeger from nullskull.com),所以我不是100%,如果我需要所有的东西,但它似乎工作正常,所以我现在就离开了,直到我学到更多关于VBA。

可能无法使用条件格式input文本,但可以更改字体颜色。 一个解决scheme可能是预先在指定的单元格中放置“LATE”字样,并将字体颜色设置为与背景颜色相同,这使得该单词不可视。当条件(公式)计算结果为true时,新格式将改变字体颜色,出现LATE字样,不需要VBA。

另一方面:不是一个简单的如果公式更好? 就像是:

 =if(amountpaid?,"PAID",if(late?, "LATE", "")) 

如果你希望你可以用有条件的格式来改变背景