Excel 什么';这段VBA代码应该返回几天,这段代码有什么问题吗?
所以我写了这段代码(它实际上是一个更大的东西的一部分,但这部分给了我问题),我是VBA新手,所以我不明白为什么它总是返回0作为公式结果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
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,现在)