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

VBA Excel № 95. Worksheet. Событие BeforeRightClick.

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

Событие BeforeRightClick в Excel активируется при щелчке правой кнопкой мыши на рабочем листе, вызывая появление контекстного меню. Если требуется отключить это меню на определенном листе, можно воспользоваться перехватом события BeforeRightClick. Ниже представлен пример процедуры, которая устанавливает значение аргумента Cancel в True, отменяя обработку события и выводя соответствующее сообщение на экран.

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

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

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

На скриншоте ниже приведен пример, демонстрирующий использование события BeforeRightClick для обработки числовых значений в ячейке. Если обнаружено числовое значение, то вызывается диалоговое окно Формат ячеек на вкладке Число (предпоследний скриншот), и аргумент Cancel устанавливается в True, чтобы избежать отображения стандартного контекстного меню. В случае отсутствия числового значения ничего не происходит (последний скриншот).

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

Обратите внимание, что в коде проводится дополнительная проверка, чтобы удостовериться в "НЕПУСТОТЕ" ячейки, так как VBA рассматривает пустые ячейки как содержащие числовые значения.

Разберем код:

  1. Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean): Эта строка объявляет начало процедуры, которая будет выполняться при событии "BeforeRightClick" на рабочем листе. Процедура принимает два аргумента: Target (ячейка, на которой произведен щелчок) и Cancel (булева переменная, которая может быть установлена в True для отмены события).
  2. If IsNumeric(Target) And Not IsEmpty(Target) Then: Это условие проверяет, является ли содержимое ячейки, на которой произведен щелчок, числовым (IsNumeric) и не пустым (Not IsEmpty).
  3. Application.CommandBars.ExecuteMso ("NumberFormatsDialog"): Если условие из предыдущей строки истинно (т.е., ячейка содержит числовое значение и не пуста), то выполняется данная строка, которая вызывает диалоговое окно "Формат ячеек" на вкладке "Число". Это окно позволяет пользователю выбрать формат для числового значения в ячейке.
  4. Cancel = True: После открытия диалогового окна и выполнения необходимых действий, эта строка устанавливает переменную Cancel в True. Это приводит к отмене события "BeforeRightClick", и стандартное контекстное меню не отображается.
  5. End If: Это ключевое слово завершает блок условия, начатый с If.
  6. End Sub: Это ключевое слово завершает процедуру.
Скриншот с моего ноутбука
Скриншот с моего ноутбука

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

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

Наука
7 млн интересуются