DateDiff() 产生不准确的答案

DateDiff() 产生不准确的答案

我正在尝试编写一些代码,使用DateDiff函数获取两个日期之间的天数差。然后我将使用此数字来确定在电子表格中输入数据的位置。

我在使用该函数时遇到了问题DateDiff,因此为了尝试找出问题所在,我已尽可能简化操作,同时仍然使用变量,但仍然不起作用。

我遇到的问题是它没有在几天内给出答案,或者答案不准确。例如,当运行下面的代码时,VBA 会给出 24 的答案。

我哪里做错了/我做错了什么?

 Dim DayValue As Date
 Dim YearStart As Date

 YearStart = DateSerial(Year(2016), Month(1), Day(1))
 DayValue = DateSerial(Year(2016), Month(1), Day(8))
 strong textMsgBox DateDiff("d", DayValue, YearStart)

答案1

您不需要 DateSerial 函数中的年、月或日函数,并且需要切换函数参数的DateDiff顺序

尝试这个:

Sub test()
 Dim YearStart As Date

 YearStart = DateSerial(2016, 1, 1)
 DayValue = DateSerial(2016, 1, 8)
 MsgBox DateDiff("d", YearStart, DayValue)
End Sub

答案2

代替:

YearStart = DateSerial(Year(2016), Month(1), Day(1))

和:

YearStart = DateSerial(2016, 1, 1)

答案3

你应该使用DateSerial(2016, 1, 1)

使用DateSerial(Year(2016), Month(1), Day(1))是一种错误的方法,它告诉 Excel:

  • 将 2016 转换为日期(因为 Excel 日期格式始于 1900 年,所以 2016 年位于 1905 年的某个时间)
  • 获取此日期的年份部分(1905)
  • 月和日也类似

相关内容