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

Pie*_*ter 6 excel vba excel-vba

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

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

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

任何建议都非常感谢.

chr*_*sen 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
Run Code Online (Sandbox Code Playgroud)