Моя главная задача - защитить формулы на листе и убедиться, что лист заблокирован, если пользователь прерывает сценарий.
Когда это работает, он делает то, что я хочу, но это только кажется работает, когда 'Es c' нажата во время указания c windows сценария. Кажется, что он не работает, когда Excel вычисляет или пытается выполнить запрос к базе данных, но он работает, когда Excel выполняет другие операции внутри себя.
On Error GoTo ErrorHandler
Application.EnableCancelKey = xlErrorHandler
...
ErrorHandler:
If Err = 18 Then
MsgBox "User interrupt detected."
Worksheets("Batch Input").Protect "Password"
Application.StatusBar = False
Exit Sub
С тех пор я удалил это из своего кода и просто вставил Unprotect / Protect повсюду в скрипте в качестве лейкопластыря, который, как я полагаю, неэффективен и немного замедляет код. Есть ли способ, чтобы MsgBox постоянно появлялся в скрипте при нажатии «Es c» или это ограничение, которое мы вынуждены обходить?