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

时间:2012-05-30 19:50:53

标签: excel vba datediff

我正在尝试使用VBA在Excel中使用DateDiff函数。

据我所知,代码应该返回一个整数值。

以下是此处在线提供的示例: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日

B5:上午12:00:00(此单元格应该列出结果)。

- 我得到的是excel默认的日期,或者是12:00。

任何想法?谢谢!

1 个答案:

答案 0 :(得分:3)

根据帮助系统,DateDiff返回

您的代码声明了两个Variants和一个Date类型。而不是

Dim dateNow, dateThen, dateFinal As Date

你可能意味着

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

这段代码对我有用。您可能需要稍微调整一下以将其应用于您的特定情况(我使用ActiveSheet使测试更快)

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

此外,我相信您的dateNow函数调用中dateThenDateDiff已被撤消。