我正在尝试使用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。
任何想法?谢谢!
答案 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
函数调用中dateThen
和DateDiff
已被撤消。