如何提取两个日期时间VBA之间的分钟差异

时间:2018-09-27 14:21:22

标签: vba excel-vba

我有一个用户窗体,该窗体自动生成当前日期时间并将其放置在单元格(批处理结束)中。然后在以后的时间再次使用该用户窗体,它将重复该步骤,但将其放在另一个单元格中(新批处理的开始)。

我想以分钟为单位计算两个日期时间之间的时差。当我从较晚的日期时间中减去较早的日期时间时,由于某种原因,我现在使用的代码给了我奇怪的否定答案,因此在某处一定有错误。 (由于午夜之后开始和结束批次,这些日期可能是同一天,也可能不是同一天)。

当我仅尝试使用单元格公式将两者相减(无代码)时,我得到的错误值为.05。

enter image description here

有人知道我可以让excel正确识别这些日期时间并减去它们,以便产生分钟差吗?

If opt1.Value = True And Range("U40") = "" Then
    Range("U40") = Format(txt1, "dd-mmm-yyyy hh:mm")
    UserForm3.Hide
ElseIf opt1.Value = True And Range("U41") = "" Then
    Range("U41") = Format(txt1, "dd-mmm-yyyy hh:mm")
    UserForm3.Hide
ElseIf opt1.Value = True And Range("U42") = "" Then
    Range("U42") = Format(txt1, "dd-mmm-yyyy hh:mm")
    UserForm3.Hide
ElseIf opt2.Value = True And Range("W40") = "" Then
    Range("W40") = Format(txt1, "dd-mmm-yyyy hh:mm")
    UserForm3.Hide
ElseIf opt2.Value = True And Range("W41") = "" Then
    Range("W41") = Format(txt1, "dd-mmm-yyyy hh:mm")
    UserForm3.Hide
ElseIf opt2.Value = True And Range("W42") = "" Then
    Range("W42") = Format(txt1, "dd-mmm-yyyy hh:mm")
    UserForm3.Hide
End If

If Range("U42") > "" And Range("W42") > "" Then
    Range("Y42") = Range("W42") - Range("U42")
ElseIf Range("U41") > "" And Range("W41") > "" Then
    Range("Y41") = Range("W41") - Range("U41")
ElseIf Range("U40") > "" And Range("W40") > "" Then
    Range("Y40") = Range("W40") - Range("U40")
End If

3 个答案:

答案 0 :(得分:2)

Excel中的时间存储为一天的一小部分。减法为您提供十进制天数,您需要乘以得到分钟数:

(Time B - Time A) * 60 Minutes in an hour * 24 Hours in a day

enter image description here

=(B1-A1)*60*24

答案 1 :(得分:1)

Range(“ Y42”)= DateDiff(“ n”,Range(“ U42”),Range(“ W42”))

答案 2 :(得分:0)

总是从大中减去小。

A1 中使用较晚的日期/时间,在 B1 中使用较早的日期/时间,在 C1 中输入:

=24*60*(A1-B1)

以分钟为单位获取差异:

enter image description here

使用VBA:

Sub datetime()
    Dim dt1 As Date, dt2 As Date
    dt1 = Range("A1").Value
    dt2 = Range("B1").Value
    MsgBox Int(24 * 60 * (dt1 - dt2))
End Sub

enter image description here