在VBa中使用DateAdd时出现溢出或被零除运行时错误

在VBa中使用DateAdd时出现溢出或被零除运行时错误,vba,excel,Vba,Excel,在VBA中使用DateAdd时出现以下错误。 运行时错误:11除零或运行时错误:6溢出(更常见) todDate从格式为短日期格式(mm/dd/yy)的单元格(“B6”)中检索。我还使用了不包含格式的函数来计算currDt,但也没有成功。知道为什么会这样吗 谢谢您需要向dateadd函数传递一个日期。Format将返回一个字符串,您也在不必要地重复该格式。试试下面的方法 Dim todDate As Date Dim currDt As string todDate = ActiveWorkb

在VBA中使用
DateAdd
时出现以下错误。
运行时错误:11除零
运行时错误:6溢出
(更常见)

todDate
从格式为
短日期格式(mm/dd/yy)
的单元格(“B6”)中检索。我还使用了不包含
格式的
函数来计算currDt,但也没有成功。知道为什么会这样吗


谢谢

您需要向dateadd函数传递一个日期。Format将返回一个字符串,您也在不必要地重复该格式。试试下面的方法

Dim todDate As Date
Dim currDt As string

todDate = ActiveWorkbook.Sheets("Sheet1").Range("B6").Value

currDt = Format(DateAdd("d", 20, todDate), "mm/dd/yyyy")

Format函数返回一个字符串,而不是一个日期。我可以简单地执行以下操作吗?
currDt=DateAdd(“d”,20,todDate)
,并将
Dim currDt作为字符串
?然后我必须将
DateAdd
currDt
一起使用,因此我认为将其作为
日期
而不是
字符串
@user3501476会更容易。这取决于用途。实际上,我会以日期格式存储日期,直到我需要用户查看它,然后,每次您希望使单元格/消息框等于格式为mmddyyyy的日期时,都要转换日期。这有意义吗?简言之,将其作为日期保存(格式不重要),直到您需要打印它为止(演示非常重要)@user3501476除非我误解了,否则您是否试图用“格式(…)”指定日期已采用的格式?@user3501476如果是后者,Jean-François Corbett在这里的回答会引起一些有趣的阅读。基本上,正确地读入变量并将其存储为日期,然后以您喜欢的格式打印。我明白了!那么,当我删除所有格式并使用每个变量时,是否知道为什么会出现运行时错误是否可以作为日期
Dim todDate As Date
Dim currDt As string

todDate = ActiveWorkbook.Sheets("Sheet1").Range("B6").Value

currDt = Format(DateAdd("d", 20, todDate), "mm/dd/yyyy")