2017-04-19 5 views
1

開始日と終了日を持つように日付をループさせようとしています。たとえば、4月3日に開始し8月31日に終了します。4月3日後に、終了日まで7日が追加されます日付と日付を表示します。私はそれをループしようとしていますが、それは無限にループし、まったく停止しません。最初の2週間は動作しますが、Do untilループを開始すると動作しません。変数Wのあなたのインクリメント値がENDDオーバーを「ジャンプ」可能性があるため、事前のおかげであなたの助けのための日付のループ

x = 5 
endD = Sheet1.Range("C20").Value 
startD = Sheet1.Range("C19").Value 
mth = Month(startD) 
Name = MonthName(mth, True) 
no = Day(startD) 
Sheet1.Range("C2").Value = no 
Sheet1.Range("C1").Value = Name 
dates = DateAdd("d", 7, startD) 
Name = MonthName(Month(dates), True) 
Sheet1.Range("D2").Value = Name 
Sheet1.Range("D1").Value = Day(dates) 
W = dates 
Do Until W = endD 
m = DateAdd("d", 7, W) 
W = m 
no = 0 
Name = " " 
no = Day(m) 
Name = MonthName(Month(m), True) 
Sheet1.Cells(1, x).Value = Name 
Sheet1.Cells(2, x).Value = no 
x = x + 1 
Loop 

答えて

2

Do Until W = endD

THSは無限ループにつながる可能性があります。

Do Until W >= endD 
+0

今度は5月8日までループします.... –

+0

私たちは無限ループの問題を解決したので、 'Debug.Print endD'を試してみて、デバッガで変数をチェックしてください。@RachelChia –

+0

それは非常に奇妙です終了日が7月31日で、他の日付ではない場合には動作します –

0
Sub test() 

Dim FirstDate As Date 
Dim LastDate As Date 
Dim NextDate As Date 

FirstDate = Range("startdate").Value 
LastDate = Range("enddate").Value 

NextDate = FirstDate 
Range("tripdays").Select 

Do Until NextDate > LastDate 

    ActiveCell.Value = NextDate 
    ActiveCell.Offset(1, 0).Select 
    NextDate = NextDate + 1 

Loop 

End Sub 

ノウハウ本:で、それを置き換えますか?

+0

で、これは私が望むものではありません。私は開始日から終了日まで毎週ループし、日付と月を表示したい –

関連する問題