使用睡眠功能但允许输入结束宏?
Use sleep function but allow for input to end macro?
我有一个循环的宏,并在每次循环后的 5 秒到 120 秒之间的随机间隔内使用睡眠功能。当宏在进行操作后进入休眠状态时,我无法在不使用控制中断的情况下结束宏,而控制中断似乎间歇性地工作。所以我的问题是这样的。我将如何让宏休眠任意时间,但又能在休眠期间随时终止宏而不中断控制?
排队暂停的另一种方法是使用Application.OnTime
...
Public Sub PauseInBackground()
Dim lngSeconds As Long, strNextTime As String
Randomize (Second(Time))
lngSeconds = Rnd() * 120
strNextTime = Format(DateAdd("s", lngSeconds, DateValue("01/01/1800")), "hh:mm:ss")
Debug.Print "Next Time = " & strNextTime
Application.OnTime Now + TimeValue(strNextTime), "RoutineToRun"
End Sub
Public Sub RoutineToRun()
Debug.Print "Now = " & Now()
' Your code/logic
PauseInBackground
End Sub
...它不会暂停宏。
https://docs.microsoft.com/en-us/office/vba/api/excel.application.ontime
我有一个循环的宏,并在每次循环后的 5 秒到 120 秒之间的随机间隔内使用睡眠功能。当宏在进行操作后进入休眠状态时,我无法在不使用控制中断的情况下结束宏,而控制中断似乎间歇性地工作。所以我的问题是这样的。我将如何让宏休眠任意时间,但又能在休眠期间随时终止宏而不中断控制?
排队暂停的另一种方法是使用Application.OnTime
...
Public Sub PauseInBackground()
Dim lngSeconds As Long, strNextTime As String
Randomize (Second(Time))
lngSeconds = Rnd() * 120
strNextTime = Format(DateAdd("s", lngSeconds, DateValue("01/01/1800")), "hh:mm:ss")
Debug.Print "Next Time = " & strNextTime
Application.OnTime Now + TimeValue(strNextTime), "RoutineToRun"
End Sub
Public Sub RoutineToRun()
Debug.Print "Now = " & Now()
' Your code/logic
PauseInBackground
End Sub
...它不会暂停宏。
https://docs.microsoft.com/en-us/office/vba/api/excel.application.ontime