0

我正在尝试将 DateDiff 函数用于使用 VBA 的 excel 中的宏。

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

以下是此位置在线提供的示例: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:2012 年 5 月 30 日

B3:2012 年 3 月 30 日

B5:12:00:00 AM(这个单元格应该列出结果)。

-我得到了excel默认的日期或12:00。

有任何想法吗?谢谢!

4

1 回答 1

3

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

您的代码声明了两个 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

此外,我相信你已经在你的函数调用dateNowdateThen反转了。DateDiff

于 2012-05-30T20:04:05.270 回答