VBA 计算两个时间戳之间有多少天、小时、分钟或秒?

Pri*_*ell 2 excel vba timestamp

我正在尝试使用 vba 显示两个时间戳之间的天数、小时数、分钟数或秒数。

到目前为止,我的代码给出了小时数或天数。

Sub Date_Dif()

    Dim d1 As Date
    d1 = Range("A8").Value

    Dim d2 As Date
    d2 = Now

    Dim hrsDiff As Long
    hrsDiff = DateDiff("h", d1, d2)

    ActiveSheet.Range("Z5").Value = IIf(hrsDiff >= 24, _
               hrsDiff \ 24 & " days " & hrsDiff Mod 24 & " hours", _
               hrsDiff & " hours")

End Sub
Run Code Online (Sandbox Code Playgroud)

我该如何调整它以给我几分钟或几秒钟?

提前致谢

Com*_*ern 6

最简单的方法是减去日期并使用HourMinuteSecond函数。由于Date变量存储为 a ,Double其中整数部分表示自纪元以来的天数,因此您可以在减法后直接使用它:

Dim diff As Date
diff = Now - #7/7/2016 2:15:16 PM#
Debug.Print CLng(Int(diff)) & " days"
Debug.Print Hour(diff) & " hours"
Debug.Print Minute(diff) & " minutes"
Debug.Print Second(diff) & " seconds"
Run Code Online (Sandbox Code Playgroud)

将其插入你的Sub,你会得到这样的东西:

Sub Date_Dif()

    Dim d1 As Date
    d1 = Range("A8").Value

    Dim diff As Date
    diff = Now - d1

    ActiveSheet.Range("Z5").Value = _
               CLng(Int(diff)) & " days " & _
               Hour(diff) & " hours " & _
               Minute(diff) & " minutes " & _
               Second(diff) & " seconds"
End Sub
Run Code Online (Sandbox Code Playgroud)