两次倒计时(不是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的注释。