2016-01-15 4 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 

Я также попытался заменить cdate() в течение цикла с помощью timevalue(). В конце концов, я хочу, чтобы мои j быть 30. (15 часов в первый день и 15 из второй)

ответ

3

Используйте DateAdd - и DateDiff -Функции для этого:

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

Смежные вопросы