gpt4 book ai didi

vba - 两次之间的倒计时器(不是日期)

转载 作者:行者123 更新时间:2023-12-02 18:25:34 26 4
gpt4 key购买 nike

我有一个小型的“作业计时器”,可以让我查看我在某项工作上花费了多长时间,以及还剩下多长时间来完成某项工作。它看起来像这样:

Time Spent On Job Image

在作业上花费的时间是正确的,它工作正常,但是,剩余时间占用作业的开始时间,将分配的作业时间添加到其中并生成“结束时间”。当我从“结束时间”中减去当前时间 (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时,计时器启动并显示表单,例程将继续运行,直到按下关闭按钮(这工作正常)。但在这个过程中,代码出错了,它不是从“1:00:00”(在本例中是分配的时间)开始倒计时,而是减去“1:00:00”并转到“23:” 00:00”,然后开始计数。

我以前对 VBA 如何以这种方式处理时间和日期遇到过严重的问题,我在这里是否遗漏了一些明显的东西?

谢谢

最佳答案

使用=Time()而不是Now

Now 将返回当前日期和时间 (DateTime),而 Time() 仅返回时间部分。

(不相关,但类似地 =Date() 仅返回 Now() 的日期部分)

编辑:此外,作为理解日期/时间实现的附加引用,请注意下面 BlackHawk 的评论。

关于vba - 两次之间的倒计时器(不是日期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24612290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com