如何从时间中仅提取小时和分钟

时间:2019-06-18 00:45:47

标签: excel vba

我具有时间单位的小时和分钟。我现在只需将小时和分钟与时间进行比较即可执行条件。

下面的代码转换时间值,并返回PM的负值并给出错误。如果我不提取时间,它将比较小时的分钟和秒,如果时间为00:00:01,则​​该分钟和秒将自动为假。

任何建议

Sub country_despatch(ByVal StartRow As Long)
    Dim MyTime As Double
    Dim MyDate As Date

    Dim LastRow As Long
    LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "B").End(xlUp).Row

    Dim iRow As Long
    For iRow = StartRow To LastRow
        MyDate = Sheet1.Cells(iRow, "B").Value 'value into date format
        MyTime = CDbl(MyDate) - CLng(MyDate) 'extract only the time from a date/time
        Call display(MyTime, iRow)
        Debug.Print "date", MyDate, CDbl(MyDate)
        Debug.Print "time part", MyTime
    Next iRow
End Sub

仅将小时和分钟与现在的小时和分钟进行比较并返回true或false的预期结果

1 个答案:

答案 0 :(得分:0)

考虑一下您的代码在做什么。在Excel中从日期提取时间的常用方法是=Value - INT(Value)。而不是INT,而是使用Clng' [which rounds up the input number][1] instead of [returning its integer value][2]. By substituting CLng for INT`,您已经完全改变了代码计算时间的方式:

对比

MyTime = CDbl(a) - Int(a)

MyTime = CDbl(a) - CLng(a)

使用上午和下午时间。