在VBA中解决DateAdd运行时错误

在VBA中解决DateAdd运行时错误,vba,excel,Vba,Excel,我一直试图解决在excel VBA中使用DateAdd的问题。我得到一个运行时错误6溢出(大多数情况下)或运行时错误11除零。我在代码中标记了运行时错误总是发生的位置。我尝试过更改变量类型,但不确定问题出在哪里。我从excel表格中读取的日期是日期格式(mm/dd/yy)。关于我为什么会在那一行出现错误,有什么建议吗 Sub date_diff() Dim todDate As Date Dim dt Dim diff As Long Dim dates(0 To

我一直试图解决在excel VBA中使用
DateAdd
的问题。我得到一个
运行时错误6溢出
(大多数情况下)或
运行时错误11除零
。我在代码中标记了运行时错误总是发生的位置。我尝试过更改变量类型,但不确定问题出在哪里。我从excel表格中读取的日期是
日期
格式(mm/dd/yy)。关于我为什么会在那一行出现错误,有什么建议吗

Sub date_diff()
    Dim todDate As Date
    Dim dt
    Dim diff As Long
    Dim dates(0 To 9) As Date
    Dim i As Long
    todDate = ActiveWorkbook.Sheets("Investing - Overview").Range("B6").Value
' dt is the Date of last signaling
    dt = ActiveWorkbook.Sheets("Investing - Overview").Range("B5").Value
    diff = DateDiff("d", dt, todDate)
    Dim rng As Range
    Dim dtCell As Range
    Dim currDt As Date
    If diff < 32 Then
        MsgBox "Wait " & (32 - diff) & " days"
    Else
        For i = 1 To 10
            currDt = DateAdd("d", 20, todDate) -> RUNTIME ERROR HERE
            Set rng = ActiveWorkbook.Sheets("US Stocks").Range("A5").End(xlDown)
            dates(i) = currDt
            MsgBox i
        Next i
    End If
End Sub
子日期_diff()
日期为日期
暗dt
暗差与长
变暗日期(0到9)作为日期
我想我会坚持多久
todDate=ActiveWorkbook.Sheets(“投资-概述”).范围(“B6”).值
‘dt是最后一次发信号的日期
dt=ActiveWorkbook.Sheets(“投资-概述”).范围(“B5”).值
diff=DateDiff(“d”,dt,todDate)
变暗rng As范围
暗淡的DTAS范围
暗电流作为日期
如果差值<32,则
MsgBox“等待”和(32天差异)和“天数”
其他的
对于i=1到10
currDt=DateAdd(“d”,20,todDate)->此处出现运行时错误
Set rng=ActiveWorkbook.Sheets(“美国股票”).Range(“A5”).End(xlDown)
日期(i)=当前日期
MsgBox i
接下来我
如果结束
端接头

我会检查您的数据及其格式,这对我来说很好。确保它们是相同的。可能是不相关的,但是为什么
dt
声明为隐式
变体呢?如果它应该是一个日期,则将其设置为
日期
。您是否尝试过将
currDt=DateAdd(“d”,20,todDate)
替换为
currDt=20+todDate
?(这可能有助于识别问题)将脚本运行到该行,然后将鼠标悬停在部件上,查看错误是否出现在todDate或DateAdd中。否则,我在我的电脑上构建了它,没有任何问题。我刚刚使用
MsgBox TypeName(currDt)和MsgBox TypeName(todDate)
进行了检查,它们确实是相同的数据类型。另外,执行
currDt=20+todDate
产生
运行时错误:11除以零