EnableCancelKey работает, но только в определенных точках скрипта? - PullRequest
0 голосов
/ 19 февраля 2020

Моя главная задача - защитить формулы на листе и убедиться, что лист заблокирован, если пользователь прерывает сценарий.

Когда это работает, он делает то, что я хочу, но это только кажется работает, когда '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» или это ограничение, которое мы вынуждены обходить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...