开机时间少于1秒,且不会无响应

Hon*_*mon 5 excel ontime vba sleep

我有一个用户窗体,它每100毫秒运行一次脚本。该脚本处理用户窗体上的图像并用于对其进行动画处理,而窗体继续接收用户输入(鼠标单击和按键)。这一直持续到关闭用户窗体为止。尽管Application.OnTime似乎效果最好,但它只能在1秒或更长的时间值上持续运行。

当我使用类似

Sub StartTimer()
    Application.OnTime now + (TimeValue("00:00:01") / 10), "Timer"
End Sub

Private Sub Timer()
    TheUserForm.ScreenUpdate
    Application.OnTime now + (TimeValue("00:00:01") / 10), "Timer"
End Sub
Run Code Online (Sandbox Code Playgroud)

并在用户窗体中调用StartTimer时,Excel变得非常无响应,并且每秒调用“ Timer”的次数比应有的次数更多。

尽管脚本以正确的间隔运行,但使用“睡眠”功能也会导致程序也无响应。

有没有解决方法?提前致谢!

chr*_*sen 3

OnTime只能安排以 1 秒的增量运行。当您尝试将其安排在 1/10 秒时,您实际上安排在 0 秒,即它立即再次运行,消耗所有资源。

简而言之,您不能用于OnTime每 1/10 秒运行一个事件。

还有其他方法,请参阅CPearson使用 Windows API 调用
Public Declare Function SetTimer Lib "user32" ...