2014-02-05 25 views
2

每当我运行睡眠时,我的所有背景宏都停止工作。我希望能够在睡眠持续运行的同时进行OnKey事件。当我使用Sleep时,如何防止我的背景宏停止?

这里的睡眠API

Sub Bombs() 
Do While bomb.Offset(, 1).Value <> "*" 
    bomb.clear 
    Set bomb = bomb.Offset(, 1) 
    bomb.Interior.Color = vbRed 
    Sleep (200) 
Loop 
End Sub 

它基本上使红细胞移动翻过屏幕的一部分。

回答

6

我使用了几年前创建的自定义子Wait(),我通常使用它来代替Sleep。看看它是否可以帮助你。这是我为测试目的创建的一个非常基本的示例。

Sub Bombs() 
    Application.OnKey "{DOWN}", "Sample" 

    Dim bomb As Range 

    Set bomb = ActiveCell 

    Do While bomb.Offset(, 1).Value <> "*" 
     bomb.Clear 
     Set bomb = bomb.Offset(, 1) 
     bomb.Interior.Color = vbRed 
     Wait 5 
    Loop 

    Application.OnKey "{DOWN}", "" 
End Sub 

Private Sub Wait(ByVal nSec As Long) 
    nSec = nSec + Timer 
    While nSec > Timer 
     DoEvents 
    Wend 
End Sub 
+1

这是一个非常聪明的多线程仿真。 +1 –

+0

谢谢,但是我想让计时器快于1秒,这就是为什么我使用睡眠的原因。有什么建议么? – user3221162

+0

@ user3221162:将'ByVal nSec As Long'设置为'ByVal nSec As Double',然后通过'.2'例如'Wait .2' –