DateDiff函数意外返回另一个date或默认值

我想在Excel中使用VBA使用DateDiff函数的macros。

据我了解,代码应该返回一个整数值。

以下是在这个位置在线提供的示例: http : //www.techonthenet.com/access/functions/date/datediff.php

-DateDiff(“yyyy”,#15/10/1998#,#22/11/2003#)将返回5

-DateDiff(“m”,#15/10/2003#,#22/11/2003#)将返回1

-DateDiff(“d”,#15/10/2003#,#22/11/2003#)将返回38

这是我使用的代码:

Sub macrotest() Dim dateNow, dateThen, dateFinal As Date dateNow = Format(Sheet1.Cells(2, 2), "DD/MM/YY") dateThen = Format(Sheet1.Cells(3, 2), "DD/MM/YY") dateFinal = DateDiff("d", dateNow, dateThen) Sheet1.Cells(5, 2) = dateFinal End Sub 

最后,这是我在我的excel行:

B2:5/30/12

B3:3/30/12

B5:12:00:00上午(这个单元格应该有列出的结果)。

– 我得到的任何date,默认为excel,或12:00。

有任何想法吗? 谢谢!

根据帮助系统,DateDiff返回一个Long

您的代码声明两个变体和一个datetypes。 代替

Dim dateNow, dateThen, dateFinal As Date

你可能的意思

Dim dateNow As Date, dateThen As Date, dateFinal As Long

此代码为我工作。 您可能需要稍微调整它以适用于您的特定情况(我使用ActiveSheet使testing更快)

 Sub macrotest() Dim dateNow As Date, dateThen As Date, dateFinal As Long dateNow = ActiveSheet.Cells(2, 2).value dateThen = ActiveSheet.Cells(3, 2).value dateFinal = DateDiff("d", dateThen, dateNow) ActiveSheet.Cells(5, 2) = dateFinal End Sub 

另外我相信你有dateNowdateThen在你的DateDiff函数调用颠倒过来。