2012-03-06 338 views
6

我有一个Do .. While循环,其中两个For ..循环嵌套;第一个For ...循环从1递增到X,第二个循环从X向下递减1。这是当前重复的无限循环。Excel VBA:中断代码执行(不是通过点击'转义')

现在,我希望用户能够'中断'这个无限循环,并且程序在中断循环时执行XYZ。

我试过使用切换按钮与Do .. While循环结合使用,但是当上述循环运行时,没有任何输入被接受。如果代码正在运行循环,则按钮的状态在单击时不会更改。

任何建议,非常感谢。

回答

10

关键是要在循环中包含一个DoEvents。这允许Excel在运行代码的同时处理按钮点击等事情

这里是一个提纲。将宏ButtonClick指定给按钮。 Main将无限期地运行,直到点击按钮。

Option Explicit 
Dim bBreak As Boolean 

Sub ButtonClick() 
    bBreak = True 

End Sub 

Sub Main() 
    Dim X As Long 
    Dim i As Long 
    bBreak = False 

    Do While True 
     X = 1000 
     For i = 1 To X 
      If bBreak Then 
       Exit Do 
      End If 
      DoEvents 
     Next 

     For i = X To 1 Step -1 
      If bBreak Then 
       Exit Do 
      End If 
      DoEvents 
     Next 
    Loop 
    If bBreak Then XYZ 
End Sub 
+0

谢谢克里斯,这就像一个魅力工作! – Pieter 2012-03-06 09:49:11