VBA无法从日期减去天数

时间:2017-06-04 11:34:00

标签: excel vba date subtraction dateadd

我正在尝试比现在大4天的日期。这是我的代码

Sub calcdate()
Dim nDateTime, oDateTime As Date
nDateTime = Format(Now, "YYMMDD")
oDateTime = Format(DateAdd("d", -4, nDateTime), "YYMMDD")
MsgBox ("Today is " & nDateTime & " And OldDate is " & oDateTime)
End Sub

但输出是'今天是170604而OldDate是02-10-3734“

我试图在没有DateAdd

的情况下这样做
nDateTime = Format(Now, "YYMMDD")
oDateTime = nDateTime - 4

*输出为'今天是170604而OldDate是170604'

我尝试了这些更改

nDateTime = Format(Now, "YYMMDD")
oDateTime = DateAdd("d", -4, nDateTime)

*输出为'今天是170604而OldDate是31-01-2367'

nDateTime = Format(Now, "YY-MM-DD")
oDateTime = Format(DateAdd("d", -4, nDateTime), "YY-MM-DD")

*输出为'今天是17-06-04而OldDate是04-06-2013'

所以在这里它似乎减去了几年,虽然我把“d”。

我试过的最后一件事:

nDateTime = Format(Now, "DD-MM-YY")
oDateTime = Format(DateAdd("d", -4, nDateTime), "DD-MM-YY")

*输出为'今天是04-06-17而OldDate是31-05-2017' 我希望这个日期,格式170531,为什么它给我2017年,而我选择格式YY?

2 个答案:

答案 0 :(得分:1)

格式化会创建一个字符串,因此您无法再对其进行合理的计算。之后改为格式化:

Dim nDateTime As Date, oDateTime As Date
nDateTime = Now
oDateTime = nDateTime - 4
MsgBox "Today is " & Format(nDateTime, "YYMMDD") & " And OldDate is " & Format(oDateTime, "YYMMDD")

另外,你需要为每个变量声明变量类型,就像我一样。

答案 1 :(得分:0)

因为格式(现在,“YYMMDD”)结果是字符串

Dim myDate As Date
Dim nDatetime As String, oDateTime As String

myDate = Now
nDatetime = Format(myDate, "yymmdd")
oDateTime = Format(DateAdd("d", -4, myDate), "YY-MM-DD")