使用DateAdd Excel VBA

时间:2017-01-17 15:03:42

标签: excel vba excel-vba date

我目前有一张带有一系列日期的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)。

0 个答案:

没有答案