Найти тему
VBA Excel с нуля

VBA Excel № 162. Как отключить кнопку закрытия пользовательского диалогового окна

Оглавление
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Иногда возникает необходимость предотвратить закрытие пользовательского диалогового окна, чтобы пользователи могли закрывать его только через специально предназначенную кнопку. В этой статье мы рассмотрим, как это сделать с помощью обработчика события QueryClose в VBA.

Что такое QueryClose?

QueryClose — это событие, которое возникает перед закрытием формы. Оно позволяет проверить причину закрытия и, при необходимости, отменить это закрытие.

Создадим форму, которую я назвал: «frm_ОтменитьЗакрытие», а Caption – «событие QueryClose»:

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Обработка события QueryClose

Код, расположенный в модуле формы UserForm, выполняется перед закрытием формы:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Как предотвратить останов макроса пользователем

Пользователь может нажать комбинацию клавиш <Ctrl+Break> для остановки макроса, что приведет к закрытию формы. Чтобы этого избежать, перед отображением формы нужно отключить эту возможность:

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Важно! Убедитесь, что в вашем коде нет ошибок, иначе можно получить бесконечный цикл.

Вызов формы

Для вызова формы в обычном модуле используйте следующий код:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

📌 Скачать файл пример, можно в конце статьи.

На макрос назначена кнопка:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

При нажатии на кнопку «х» выходит сообщение:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

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

Ведь иногда нужно, чтобы была выполнения какая-то программа в обязательном случае, поэтому вынуждаем пользователя нажать кнопку "Ок".

СКАЧАТЬ ФАЙЛ ПРИМЕР