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