Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 什么';这段VBA代码应该返回几天,这段代码有什么问题吗?_Excel_Vba - Fatal编程技术网

Excel 什么';这段VBA代码应该返回几天,这段代码有什么问题吗?

Excel 什么';这段VBA代码应该返回几天,这段代码有什么问题吗?,excel,vba,Excel,Vba,所以我写了这段代码(它实际上是一个更大的东西的一部分,但这部分给了我问题),我是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

所以我写了这段代码(它实际上是一个更大的东西的一部分,但这部分给了我问题),我是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
功能测试(开始日期为日期,结束日期为日期)
昏暗的一天
如果begindatum<1/9/1996且begindatum>31/7/1986,则
如果einddatum>31/8/1996,则
Days1=DateDiff(“d”,1996年1月9日,开始)
否则:Days1=DateDiff(“d”,einddatum,begindatum)
如果结束
如果结束
测试=第1天
端函数
顺便说一句,我用不同的日期进行了测试,结果都返回了0。
如果有人能指出我错在哪里,我将不胜感激

亲切问候,
快一点你的约会

 1 / 9 / 1996
是数学表达式-1除以9除以1996,强制为整数类型时为零

对于文字日期,请使用:

 If begindatum < #1/9/1996# and ...
如果begindatum<#1/9/1996#和。。。
你的约会

 1 / 9 / 1996
是数学表达式-1除以9除以1996,强制为整数类型时为零

对于文字日期,请使用:

 If begindatum < #1/9/1996# and ...
如果begindatum<#1/9/1996#和。。。

您需要使用DateSerial将所有日期转换为整数,然后进行比较。

您需要使用DateSerial将所有日期转换为整数,然后进行比较。

无空格,正确的分隔符,VBA总是希望使用美式(m/d/yy)格式,因此对于9月1日,请使用
9/1/1996
无空格,正确的分隔符,VBA总是希望采用美式(m/d/yy)格式,所以在9月1日,使用
#9/1/1996#

只是为了分享知识。。。您还可以使用
CDate
功能。它工作得很好,还接受其他日期格式,如
CDate(“01/Sep/1996”)


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

只是为了分享知识。。。您还可以使用
CDate
功能。它工作得很好,还接受其他日期格式,如
CDate(“01/Sep/1996”)


但是要注意。如果你在不同的区域设置下(例如,全球应用程序)使用,处理日期可能会成为一件麻烦事.

+1这比#date好,因为它消除了dmy/ymd混淆+1这比#date好,因为它消除了dmy/ymd混淆这是可行的,但我自己没有尝试的原因是因为它有效:函数test2(begindatum作为日期,einddatum作为日期)test2=DateDiff(“d”,1990年1月1日,现在)结束函数为什么这样做呢?它与DateDiff(“d”,0,Now)相同。Ty这是可行的,但我自己没有尝试的原因是因为这样做:函数test2(begindatum作为日期,einddatum作为日期)test2=DateDiff(“d”,1/1/1990,现在)End函数为什么这样做?它与
DateDiff(“d”,0,现在)