Добавление элементов в контекстное меню

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

К сожалению, вы не можете редактировать контекстные меню так же, как вы можете редактировать другие меню – используя Настройте в меню “Инструменты”. Вместо этого вы должны управлять контекстными меню через VBA.

Если вы хотите добавить элемент в контекстное меню, которое появляется при щелчке правой кнопкой мыши по ячейке, вы можете использовать следующий код:

Sub AddItemToContextMenu () Dim cmdNew As CommandBarButton Set cmdNew = CommandBars («cell»). Controls.Add With cmdNew .Caption = «My Procedure» .OnAction = «MyProcedure» .BeginGroup = True End WithEnd Sub

Все, что вам нужно сделать, это установить для свойства .Caption любой текст меню, который вы хотите использовать, а затем изменить свойство .OnAction так, чтобы оно указывало на макрос или команду, которую вы хотите использовать. Если позже вы захотите удалить этот параметр меню, вы можете использовать следующий макрос:

Sub RemoveContextMenuItem () При ошибке Возобновить Следующие панели команд («ячейка»). Элементы управления («Моя процедура»). DeleteEnd Sub

Чтобы использовать это, измените текст «Моя процедура» на любой текст, который вы использовали в свойстве .Caption предыдущего макроса. Оператор On Error используется в этом макросе на случай, если указанный элемент макроса не был добавлен ранее.

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

Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, _ Cancel As Boolean) Dim cmdNew As CommandBarButton For Each icbc В Application.CommandBars («ячейка»). Элементы управления, если icbc.Tag = «brccm» Затем icbc. Удалить следующий icbc, если не Application.Intersect (Target, Range («c10: e25»)) _ Is Nothing Then Set cmdNew = CommandBars («ячейка»). Controls.Add With cmdNew .Caption = «My Procedure» .OnAction = «MyProcedure» .BeginGroup = True .Tag = «brccm» End With End IfEnd Sub

In в редакторе VBA, этот макрос необходимо добавить на конкретный рабочий лист, с которым вы хотите его использовать. Все, что вам нужно сделать, это дважды щелкнуть этот лист в Project Explorer (верхний левый угол редактора VBA), а затем ввести его в окно кода для этого листа.

Как с предыдущим макросом все, что вам нужно сделать, это изменить настройки, указанные для свойств .Caption и .OnAction. Кроме того, вы можете изменить диапазон ячеек, который считается “допустимым” при добавлении пункта меню – просто измените спецификацию диапазона “c: 10: e25” на желаемый диапазон.. Вы даже можете использовать именованный диапазон вместо диапазона ячеек, что прекрасно, если ваш допустимый диапазон действительно представляет собой набор несмежных ячеек.

Источник: frestage.ru

Бытовой вопрос