我正在尝试计算在Excel中完成分析所需的时间。我正在使用DateDiff来计算花费的秒数,然后尝试以小时,分钟,秒的格式对其进行格式化。

我的以下代码在网上导致溢出错误:

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") & "."

最佳答案

看来您补偿过度了。无需转换。只需从结束时间中减去开始时间(可选地存储为@MatthewD提到的 double ),然后将单元格格式设置为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声明是Date类型的var,则它是不正确的。您使用的方法将其创建为变体。

10-08 15:12