为什么添加时间到一个循环中的date不适用于VBA?

我试图做到以下几点:

startDate = Date endDate = DateAdd("yyyy", -1, startDate) currentDate = startDate Do While DateDiff("d", endDate, currentDate) <> 0 With ActiveSheet.Range("A1") .Offset(i, 0).Value = currentDate End With currentDate = DateAdd("d", -1, currentDate) i = i + 1 Loop 

从startDate循环到endDate并输出中间的每个date。 在第一次迭代之后,currentDate等于最小date(1899)。 我知道还有其他方法可以做到这一点,我现在有一种方法可行,但为什么这会失败呢?

你的代码对我来说工作得很好

你实际上可以避免循环

  • 添加一个工作表函数到感兴趣的时间跨度
  • 将函数转储到一个变体数组,直接指向表单(如下所示)

code

 Sub Test2() Dim x Dim dtStart As Date Dim lngStart As Long 'test for leap year lngStart = 365 If Year(Now()) Mod 4 = 0 Then If Year(Now()) Mod 25 = 0 Then lngStart = lngStart + 1 End If dtStart = Date x = Application.Evaluate("NOW()-row(1:" & lngStart & ")+1") With [a1].Resize(UBound(x, 1), 1) .Value = x .NumberFormat = "d/mm/yyyy;@" End With End Sub