Excel VBA:中断代码执行(不是通过命中'escape')

时间:2012-03-06 08:39:37

标签: excel excel-vba vba

我有一个Do .. While循环,其中两个For ..循环嵌套;第一个For ..循环从1到X计数,第二个循环从X向下计数到1.这是目前无限重复的。

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

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

任何建议都非常感谢。

1 个答案:

答案 0 :(得分: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