个人认为这个问题有点深度。
代码如下:
Timer1.Enabled = True
Timer1.Interval = 300Private Sub Timer1_Timer()
Debug.Print "x"
Do
DoEvents
'其它代码(可能需要花一些时间)
Loop
End Sub实际结果是:Debug只显示一个x,然后程序永远陷入DoEvents循环。
希望的效果是,DoEvents循环时,还能再发生Timer()事件,执行Debug.Print "x"。请教实现思路。
代码如下:
Timer1.Enabled = True
Timer1.Interval = 300Private Sub Timer1_Timer()
Debug.Print "x"
Do
DoEvents
'其它代码(可能需要花一些时间)
Loop
End Sub实际结果是:Debug只显示一个x,然后程序永远陷入DoEvents循环。
希望的效果是,DoEvents循环时,还能再发生Timer()事件,执行Debug.Print "x"。请教实现思路。
沙发兄,拜托,事情还没处理完(可能需要一点时间)呢,就Exit Sub???????
Timer1.Enabled = True
Timer1.Interval = 300 Private Sub Timer1_Timer()
Timer1.Enabled = false
Debug.Print "x"
Do
DoEvents
'其它代码(可能需要花一些时间)
Loop
Timer1.Enabled = True
End Sub
Timer1.Enabled = True
Timer1.Interval = 300 Private Sub Timer1_Timer()
Timer1.Enabled = false
Do
Debug.Print "x" '要一直打印就写到循环里...
DoEvents
'其它代码(可能需要花一些时间)
Loop
Timer1.Enabled = True
End Sub
Debug.Print 只是用来指示Timer()事件发生了,重要的在“其它代码(可能需要花一些时间)”,我是希望在前一次Timer()事件代码处理完成之前,不影响下一次Timer()的触发。
我也知道debug.print只是测试用,我的代码关键是开始do循环时关闭定时器,do循环完毕重新打开定时器,不就行了...难道你要的是多线程?
LZ思路想复杂了
当开始DoEvents循环时,Timer()事件就不会再次发生了,不需要我Timer1.Enabled = False。而且这也不是我想要的。我希望在DoEvents循环时,Timer1继续Enabled,继续能发生Timer()事件,还能执行到Debug.Print等代码。10楼的兄弟说了,此路不通,本帖无解。