2015-08-07 4 views
3

Я пытаюсь вычислить время, необходимое для завершения анализа в Excel. Я использую DateDiff для вычисления количества секунд, которые требуется, а затем попробуйте отформатировать его в часах, минутах, секундах.Как правильно преобразовать секунды в hh: mm: ss в Excel

Мой код ниже вызывает ошибку переполнения на линии:

dTime = dTime/(60 * 60 * 24) 

Вы знаете, что я делаю не так?

Dim dTime As Long 
Dim startTime, endTime As Date 

startTime = Now() ' at the start of the analysis 
endTime = Now() ' at the end of the analysis 

dTime = DateDiff("s", startTime, endTime) 
dTime = dTime/(60 * 60 * 24) 'convert seconds into days 
StatusBox.Value = "Analysis completed in " & Format(dTime, "hh:mm:ss") & "." 
+3

Вы, вероятно, нужно DTIME As Double – MatthewD

+0

'startTime' в настоящее время объявлен как вариант здесь. Вы должны быть явным: 'Dim startTime as Date' – kaybee99

ответ

5

Кажется, что вы чрезмерно компенсируете. Преобразование не требуется. Просто вычтите время начала с момента окончания (опционально сохраненное как двойное, как указано в @MatthewD) и отформатируйте ячейку как hh: mm: ss (предпочтительно) или как строка, представляющая время с Format(dTime, "hh:mm:ss").

Dim dTime As Double 
Dim startTime As Date, endTime As Date 

startTime = Now() ' at the start of the analysis 
'analysis here 
endTime = Now() ' at the end of the analysis 

dTime = endTime - startTime 
StatusBox.Value = "Analysis completed in " & Format(dTime, "hh:mm:ss") & "." 

Ваше объявление startTime было неправильным, если вы хотите, чтобы он был типом даты var. Метод, который вы использовали, создал его как вариант.

2

Попробуйте

Sub seconds() 
Dim dTime As Variant 
Dim startTime, endTime As Date 

startTime = #8/7/2015 10:43:32 PM# ' at the start of the analysis 
endTime = Now() ' at the end of the analysis 

dTime = DateDiff("s", startTime, endTime) 
dTime = dTime/86400 
MsgBox "Analysis completed in " & Format(dTime, "hh:mm:ss") & "." 

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