2017-01-05 4 views
0

У меня есть код, в котором ячейка содержит предыдущее время. Если я запускаю программу, она запускается и вычисляет разницу между текущим временем и предыдущим временем (ячейка содержит) и помещает ее в другую ячейку. Я попытался, но это дает мне ошибку 13 и говорит, что несоответствие типа любезно помогает мне.вычислить разницу во времени в ошибке vba 13

Cells(Row, 3).Value = DateDiff("h:mm:ss", Cells(Row, 2), Now()) 
+2

'DateDiff' [не] (http://stackoverflow.com/a/8232822/11683) принимает' "ч: мм: сс" 'для первого параметра. – GSerg

ответ

1

Вы можете создать собственный DateDiff, путем вычисления разности полных секунд. Затем выполните математику, чтобы получить количество часов (24 * 60 секунд), минут (60 секунд) и секунд.

После этого преобразуйте результаты в String и таким образом помещая значение в ячейку как «hh: mm: ss».

Код

Option Explicit 

Sub GetDiffInTime() 

Dim lRow As Long 
Dim DHours As Long, DMin As Long, DSec As Long, TotalSec As Long 

lRow = 2 
' get total difference in seconds 
TotalSec = DateDiff("s", Cells(lRow, 2), Now()) 

DHours = Application.WorksheetFunction.RoundDown(TotalSec/(24 * 60), 0) 
DMin = Application.WorksheetFunction.RoundDown((TotalSec - (DHours * (24 * 60)))/60, 0) 
DSec = TotalSec - (DHours * (24 * 60)) - (DMin * 60) 

' convert the values into strings, make the cell format look like "hh:mm:ss" 
Cells(lRow, 3) = CStr(DHours) & ":" & CStr(DMin) & ":" & CStr(DSec) 

End Sub 
+0

@ DK JOSHI вы пробовали мой код выше? это сработало для вас? –

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