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

VBA Excel № 102. Отключение контекстного меню.

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

В предыдущей статье №95 мы рассмотрели процедуру Worksheet_BeforeRightClick, предназначенную для отключения контекстного меню в Excel. В данной статье мы более детально рассмотрим этот процесс, включая дополнительные шаги по перехвату комбинации клавиш <Shift+F10>.

Процедура Worksheet_BeforeRightClick (похожая из статьи №95) размещена в модуле кода объекта "Лист1" (или другого листа, в зависимости от конкретной ситуации). Вот её код:

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

Этот код отменяет стандартное контекстное меню при правом клике и выводит сообщение о недоступности контекстного меню.

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

Однако пользователь все еще может вызвать контекстное меню с использованием комбинации клавиш <Shift+F10> (или в моём случае <Shift+Fn+F10> т.к. у меня ноутбук). Для блокировки этой комбинации давайте напишем следующие процедуры в СТАНДАРТНЫЙ модуль VBA:

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

Процедура Отключение_ShiftF10 устанавливает перехват для комбинации клавиш <Shift+F10>, вызывая процедуру NoShiftF10, которая выводит сообщение о том, что данная комбинация неактивна.

После вызова процедуры Отключение_ShiftF10 и последующего нажатия комбинации клавиш <Shift+F10>, вы увидите сообщение, как показано на скриншоте.

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

Ну и подключим клавиши обратно через процедуру Подключение_ShiftF10:

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Хочу отметить уважаемые читатели, что процедура Worksheet_BeforeRightClick работает только в той рабочей книге, где она была создана, в то время как событие, вызываемое комбинацией клавиш <Shift+F10>, применяется ко всем открытым рабочим книгам.