计算vba误差的时差13

时间:2017-01-05 18:02:25

标签: vba

我有一个代码,其中一个单元格包含上一次。如果我运行它运行的程序并计算当前时间和上一个时间之间的差异(单元格包含)并将其放在另一个单元格中。我试过了,但它给了我错误13,并说类型不匹配,请帮助我。

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

1 个答案:

答案 0 :(得分: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