所以我写了这段代码(它实际上是一个更大的东西的一部分但是这部分给了我问题)而且我是VBA的新手所以我无法弄清楚为什么这总是会返回0作为公式结果。
Function test(begindatum As Date, einddatum As Date)
Dim Days1
If begindatum < 1 / 9 / 1996 And begindatum > 31 / 7 / 1986 Then
If einddatum > 31 / 8 / 1996 Then
Days1 = DateDiff("d", 1 / 9 / 1996, begindatum)
Else: Days1 = DateDiff("d", einddatum, begindatum)
End If
End If
test = Days1
End Function
我用各种日期测试了btw,所有这些都返回了输出0 如果有人能指出我哪里出错了,我将不胜感激。
请问,
Daquicker
答案 0 :(得分:3)
您的约会对象;
1 / 9 / 1996
是数学表达式 - 1 除以 9 除以 1996 - 强制转换为整数类型时为零。
使用文字日期:
If begindatum < #1/9/1996# and ...
答案 1 :(得分:2)
您需要使用DateSerial将所有日期转换为整数,然后比较它们。
答案 2 :(得分:0)
没有空格,正确的#分隔符和VBA始终需要美国(m / d / yy)格式,因此对于9月1日,请使用#9/1/1996#
。
答案 3 :(得分:0)
只是为了分享知识......你也可以使用CDate
功能。它工作得很好,也接受其他日期格式,如CDate("01/Sep/1996")
。