两次倒计时(不是date)

我有一个小小的“工作计时器”,可以让我看看在一份工作上花了多长时间,还有多less时间才能完成工作。 它看起来像这样:

在工作图像上花费的时间

在工作上花费的时间是正确的,但工作正常,但剩余的时间需要工作的开始时间,将分配的工作时间添加到工作时间并产生“结束时间”。 当我从“结束时间”减去当前时间( Now() ),我得到奇怪的结果。

这是我的代码:

 Public dismissed As Boolean Public TimeUpdate As Integer Public Function TimeSpent( _ Optional TimeStarted As Variant, _ Optional Allocated As Variant, _ Optional TU) If Not IsMissing(TimeStarted) Then TimeSpent = Now() - TimeValue(TimeStarted) End If End Function Public Function Remaining( _ Optional TimeStarted As Variant, _ Optional Allocated As Variant) If Not IsMissing(Allocated) And Not IsMissing(TimeStarted) Then EndTime = TimeValue(Allocated) + TimeValue(TimeStarted) Remaining = EndTime - Now() End If End Function Public Sub TS() x = Now() + TimeSerial(0, 0, 1) TimeSpentForm.Spent.Caption = TimeSpent(Job.StartTime1.Value, Job.ACT.Value, TimeUpdate) TimeSpentForm.Spent.Caption = Format(TimeSpentForm.Spent.Caption, "hh:mm:ss") TimeSpentForm.Remaining.Caption = Remaining(Job.StartTime1.Value, Job.ACT.Value) TimeSpentForm.Remaining.Caption = Format(TimeSpentForm.Remaining.Caption, "hh:mm:ss") If dismissed = False Then Application.OnTime x, "TS" End If End Sub 

当调用例程TS ,定时器启动并显示表单,例程将继续运行,直到按下解除button(这个工作正常)。 但是一路上代码出错了,而不是从“1:00:00”(在这个特定情况下分配的时间)开始倒计时,而是从“1:00:00”减去“23: 00:00“然后数起来。

对于VBA如何以这种方式处理时间和date,我有过严重的问题,有没有什么明显的我在这里失踪?

谢谢

使用=Time()而不是Now

Now将返回当前date以及时间(DateTime),而Time()只返回时间部分。

(不相关,但类似=Date()只返回Now()的date部分)

编辑:另外,作为理解date/时间的附加参考,请注意下面的BlackHawk的注释。