在Access中使用DateDiff在条件格式中使用颜色代码日期

时间:2014-07-03 20:14:55

标签: vba ms-access access-vba datediff conditional-formatting

我有一份清关表及其到期日。如果许可证已过期,我希望它是红色的,如果它在6个月内过期我想要它是琥珀色,如果它在6个月以上的绿色到期并且如果它尚未被批准(因此不会但是有一个失效日期)然后是黑色。

我将文本默认为黑色,然后

RED

[C_ExpiryDate]<Now() 

AMBER

DateDiff("m",[C_ExpiryDate],Now())<6 And [C_ExpiryDate]>Now()

GREEN

DateDiff("m",[C_ExpiryDate],Now())>6 And [C_ExpiryDate]>Now()

这似乎有几个不同的问题,从我所知道的红色工作正常。但其他两个似乎处理得很差,例如2015年9月6日的清关是琥珀色(今天是2014年7月3日,所以这应该是绿色的)。类似于2017年3月5日,我认为它只关注一年中的月份,但我不太清楚如何更好地处理这个问题。

不确定是否可能更容易默认为绿色,也许可以编写类似

的内容
[C_ExpiryDate] = ""

但这似乎没有做任何事情,即使有一个空白日期,一切都会变成绿色。单引号也类似。

任何赞赏的建议......

2 个答案:

答案 0 :(得分:4)

您使用的是哪个版本的MS Access?这对我有用:

conditional formatting

result

答案 1 :(得分:2)

你写它的方式正在发生(我用#06/Sept/2015#代替[C_ExpiryDate]以保持你的榜样)

红?

#06/Sept/2015#<Now() --> False

琥珀?

DateDiff("m",#06/Sept/2015#,Now())<6 And #06/Sept/2015#>Now() --> True

不评估绿色

问题在于您首先拥有更大的日期,而最后的日期更短。切换它们。

或者,或者,既然您正在检查[C_ExpiryDate]>Now(),您可以获取它们的绝对值,而不用担心订单。

#06/Sept/2015# < Now() --> False (Red)
DateDiff("m",Now(),#06/Sept/2015#) < 6 And #06/Sept/2015# > Now() --> False (Amber)
DateDiff("m",Now(),#06/Sept/2015#) > 6 And #06/Sept/2015# > Now() --> True (Green)

但你没有equal to 6 months条件。你可以考虑一下。