【问题标题】:calculate time difference in vba error 13计算 vba 错误 13 中的时间差
【发布时间】:2017-05-20 09:25:18
【问题描述】:

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

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

【问题讨论】:

  • DateDiff does not 接受"h:mm:ss" 作为第一个参数。

标签: vba


【解决方案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

【讨论】:

  • @DK JOSHI 你试过我上面的代码了吗?它对你有用吗?
猜你喜欢
  • 2018-03-15
  • 1970-01-01
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
相关资源
最近更新 更多