我目前有一张带有一系列日期的Excel表格和一张不同表格中的单元格,上面有我们上次运行此宏的日期。
我需要编写一个宏来检查今天的日期是否是我们上次运行宏之后至少32天的日期。
如果是这样,我想用一系列日期搜索工作表,并在日期数组中添加10个日期。
我们添加的日期代表今天结束前n * 30天的结束日期,其中n为1到10.
所以基本上是10个日期,每个日期代表今天日期之前30天的倍数。
但是,这些日期必须出现在上面提到的一系列日期的表格中,所以如果从今天起减去30天给出一个在上述系列日期中不存在的日期,我们将继续减去1天,直到我们找到了一个存在的日期。
希望这是有道理的。我知道这有点令人困惑,但我觉得我必须给出一些背景。
我的代码:
Sub date_diff()
Dim todDate
Dim dt
Dim diff As Long
Dim dates(0 To 9) As Date
Dim i As Long
todDate = Format(ActiveWorkbook.Sheets("Overview").Range("B6").Value, "mm/dd/yyyy")
' dt is the Date of last signaling
dt = ActiveWorkbook.Sheets("Overview").Range("B5").Value
diff = DateDiff("d", dt, todDate)
Dim rng As Range
Dim dtCell As Range
Dim currDt
If diff < 32 Then
MsgBox "Wait " & (32 - diff) & " days"
Else
For i = 1 To 10
currDt = Format(DateAdd("d", 20, todDate), "mm/dd/yyyy") ---> OVERFLOW HERE
Set rng = ActiveWorkbook.Sheets("US Stocks").Range("A:A")
' Find the day - Loop until you find one at least 30 days apart
Do While rng.Find(What:=currDt) Is Nothing
currDt = DateAdd("d", -1, currDt)
Loop
dates(i) = currDt
MsgBox i
Next i
End If
End Sub
运行时错误&#39; 6&#39;: 溢出
我认为错误来自于我如何处理或如何在VBA中解释日期。查看溢出线的代码。我对VBA很新,所以我仍在学习这些微妙之处。仅供参考,日期在&#34;短日期&#34;格式如1/13/15(mm / dd / yy)。