1. Возможно, книга была сохранена после
Application.EnableCancelKey = xlDisabledТогда добавьте в начале кода
Application.EnableCancelKey = xlInterruptЕсли поможет, то сохраните книгу, так как это свойство сохраняется вместе с книгой, аналогично
Application.Calculation2. Попробуйте использовать
Application.EnableCancelKey = xlErrorHandlerВот немного дополненный мною пример использования этого из справки:
Код |
---|
Sub Test()
Dim v, x
On Error GoTo handleCancel
Application.EnableCancelKey = xlErrorHandler
MsgBox "This may take a long time: press ESC or CTRL-BREAK to cancel"
For x = 1 To 1000000 ' Do something 1,000,000 times (long!)
' do something here
v = Cells(x).Value
Next
handleCancel:
If Err = 18 Then
If MsgBox("Continue?", vbQuestion + vbYesNo) = vbYes Then Resume
ElseIf Err Then
MsgBox Err.Description, vbCritical, "Error #" & Err.Number
Else
MsgBox "Ok"
End If
End Sub |
Чтобы исключить состояние "не отвечает", можно в цикле изредка выполнять DoEvents, например так:
If (x Mod 1000) = 0 Then DoEvents3. В качестве более надежной альтернативы останова можно зажать
Alt+Esc до тех пор, пока код не приостановится.
Кому-то еще помогает
Ctrl+Shift+Break