Excel VBA: прервать выполнение кода (не нажав "escape"))

У меня есть дело .. В то время как цикл, в котором два для.. петли вложены; первый для.. цикл подсчитывает от 1 до X, второй цикл отсчитывает от X до 1. В настоящее время это повторяется до бесконечности.

теперь я хочу, чтобы пользователь мог "прерывать" этот бесконечный цикл и чтобы программа, после прерывания цикла, выполняла XYZ.

Я пробовал использовать кнопку переключения в сочетании с Do.. Пока цикл, но пока вышеупомянутый цикл выполняется, нет ввод принимается. Состояние кнопки не изменяется при нажатии, если в коде выполняется цикл.

любые предложения высоко ценятся.

1 ответов


ключ должен включать 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