VBA不能从date中减去天数

我想要比现在更早的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'我想这个date,格式170531,也为什么它给了我2017年,而我只select格式YY?

格式创build一个string,所以你不能再明智地进行计算。 事后做格式化:

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

此外,您需要为每个variables声明variablestypes,就像我所做的那样。

因为格式(现在,“YYMMDD”)结果是string

 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")