这段VBA代码应该返回多少天有什么问题?

时间:2011-08-17 14:40:26

标签: excel-vba vba excel

所以我写了这段代码(它实际上是一个更大的东西的一部分但是这部分给了我问题)而且我是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

4 个答案:

答案 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")

但请注意。如果您在不同的区域设置(例如全球应用程序)下使用它,处理日期可能会变得很痛苦。