我正在尝试编写一些代码,使用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)
- 月和日也类似