2016-01-15 111 views
1

我有兩個字符串與日期,我想循環通過日期的小時。我試過如下:循環通過小時vba

strStart = "15-01-2016 09:00" 
strEnd = "16-01-2016 15:00" 
j=0 

for i = cdate(strStart) to cdate(strEnd) 
    msgbox(i) 
    j=j+1 
next i 

我也試圖通過timevalue()在更換cdate() for循環。最後,我希望我的j是30(15小時的第一天,而該第二15)

回答

3

使用DateAdd - 和DateDiff -functions此:

dateStart = cDate(strStart) 
dateEnd = cDate(strEnd) 
j = 0 
While DateDiff("h", dateStart, dateEnd) > 0 
    j=j+1 
    dateStart = DateAdd("h", 1, dateStart) 
Wend 

這樣,您不必爲每個循環創建一個新的Date,並且您可以輕鬆訪問其他日期格式(天,分,年......)

+0

工作正常,但對我而言,它實際上並不工作去第二天。任何簡單的方法來解決此問題? – Grafit

+0

我剛剛修正了'strStart'中的一個小錯字,請確保您的日期設置正確。除此之外,「你必須去第二天」是什麼意思?一旦'startDate'打到午夜,它會表現得很奇怪嗎? – Verzweifler

+0

它在第一天的15:00開始表現奇怪,也許是因爲日期的小時部分不再不同了? – Grafit