0

私は次のことをしようとしていました:

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 までループし、その間のすべての日付を出力します。最初の反復の後、 currentDate は最小日付 (1899) に等しくなります。これを行うには他の方法があることは知っており、現在は機能する方法がありますが、なぜこれが失敗するのですか?

4

1 に答える 1

4

あなたのコードは私のためにうまくいきました

Yooは実際にどちらかによってループを回避することができます

  • 対象の期間にワークシート関数を追加する
  • シートに直接あるバリアント配列に関数をダンプする(以下のように)

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
于 2012-09-24T02:34:51.910 に答える