Блокировка правой кнопки мышки в Excel

Блокировка правой кнопки мышки в Excel

Добрый день, уважаемые читатели блога! Сегодня отвечаю на вопрос одного из подписчиков - как заблокировать вызов контекстного меню (щелчок правой кнопкой мышки) на листе и книге Excel.

Самый простой и действенный способ - написать небольшой макрос. Пойдём по уже знакомому алгоритму вставки кода в элементы файла Excel. О том как найти вкладку "Разработчик" и добавлять код VBA в модули, листы и книги можно посмотреть в предыдущих статьях.

 

Блокируем лист

 

  • открываем вкладку "Разработчик";
  • нажимаем кнопку "Visual Basic";
  • два раза щёлкаем на имя листа где хотим заблокировать щелчок правой кнопки мыши (у меня это Лист1).

Блокировка правой кнопки мышки в Excel

 

Далее вставляем небольшой макрос:

 

Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True

End Sub

 

Вся соль заключается в имени команды - перед щелчком правой кнопки мышки программа проверяет, а можно ли вообще щёлкать? В нашем случае аргумент Cancel имеет значение True, то есть программа проверила возможность блокировки и получила положительный ответ, заблокировано.

Будьте очень внимательны, если данный код разместить в модуле рабочей книги ("Workbook") он не сработает.

 

Блокируем книгу

 

Для блокировки правой кнопки мышки на новых листах следует указать вот такой макрос:

 

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

Cancel = True

End Sub

 

Здесь изменена область - вместо листа работаем с книгой, и событие (SheetBeforeRightClick), действие и аргумент остались прежними.

Блокировка правой кнопки мышки в Excel

 

Если хотим, чтобы также выводилось некое сообщение к коду можно добавить всплывающее окно с сообщением.

 

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

Cancel = True
MsgBox ("Контекстное мею заблокировано!")

End Sub

 

Блокировка правой кнопки мышки в Excel

 

Теперь при щелчке будет выводиться сообщение.

 

Блокировка правой кнопки мышки в Excel

 

Счётчик нажатий правой кнопки мыши

 

Можно пойти дальше и показывать места где был совершён щелчок правой кнопкой мышки, вставляя в эти места надписи с номером нажатия. Код будет следующим. В нём мы избавимся от всплывающего окна и добавим счётчик.

 

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
' Счетчик нажатий кнопки мыши
Static intCount As Integer
Dim x As Integer, y As Integer
Cancel = True

' Отображение текстового поля с количеством щелчков правой _
кнопкой мыши
x = Target.Left
y = Target.Top
intCount = intCount + 1
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
x, y, 35, 20).TextFrame.Characters.Text = intCount

End Sub

 

Блокировка правой кнопки мышки в Excel

 

В код макроса добавлен счётчик щелчков правой кнопкой мыши, который определяет положение курсора (ячейки на которую он наведён) и порядковый номер (начиная с единицы) вызова контекстного меню. Результат будет следующим.

 

Блокировка правой кнопки мышки в Excel

 

Всё просто! Теперь можно блокировать контекстное меню разными способами! Всем удачи!

Автор записи: Иван

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.