我想在我的应用程序中添加1秒的等待时间。
我在网上找到了什么?
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 1
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
这是我的代码
Sub workwithdelay()
Dim i As Integer
Dim done As Integer
Dim newHour As Integer
Dim newMinute As Integer
Dim newSecond As Integer
Dim waitTime As String
Dim ws As Worksheet
Set ws = ActiveSheet
frame = Cells(1, "A").Value
For i = 1 To done
newHour = Hour(Now)
newMinute = Minute(Now)
newSecond = second(Now) + 1
waitTime = newHour: newMinute: newSecond
(ALL of work Code)
Application.Wait waitTime
Next i
End Sub
代码需要0.30秒到0.45秒才能完成for循环中的一个循环(不包括等待时间),具体取决于数据处理。无论循环的处理时间是多少,我都想添加一个确定的1秒来完成一个循环周期。
答案 0 :(得分:1)
您需要对do...loop + timer
使用不同的技巧。
Sub WaitOneSecond()
Dim Start as single
start = timer
do while start + 1 > timer
doevents
loop
end sub
并在必要的原始子调用WaitOnSecond
中填写:
Sub workwithdelay()
(...)
For i = 1 To done
(...)
call WaitOnSecond
Next i
End Sub
上面的一些信息:
timer
从今天的中午开始计算秒数和毫秒数application.wait
无法识别毫秒,因此您无法获得准确的1秒等待时间答案 1 :(得分:1)
你有正确的想法,但我认为你想要的是TimeValue
函数(documented here)。
你可以像这样使用它:
Dim StartTime as Date
Dim EndTime as Date
StartTime = Now
EndTime = StartTime + TimeValue("00:00:01")
' Do Stuff
Application.Wait EndTime
这会导致应用程序在Do Stuff
部分的开始之后等待一秒钟,我认为这就是你所要求的。
希望这会有所帮助:)