Продолжим рассматривать способы вызова и выполнения процедур Sub в VBA.
1. Выполнение процедуры Sub с использованием горячих клавиш
2. Вызов процедуры Sub с помощью ленты
3. Вызов процедуры Sub из пользовательского контекстного меню
4. Вызов процедуры Sub из другой процедуры
5. Выполнение процедуры Sub по щелчку на объекте
6. Выполнение процедуры Sub по событию
7. Выполнение процедуры Sub в окне отладки
Выполнение процедуры Sub с использованием горячих клавиш:
· Первый способ описан в статье №1
· Второй способ:
Давайте разберем строку «Application.OnKey "^+M", "МояПроцедура» более подробно:
Эта строка использует метод `OnKey` объекта `Application` для присвоения комбинации клавиш "Ctrl+Shift+M" определенной процедуре с именем "МояПроцедура".
- "^" представляет собой клавишу "Ctrl".
- "+" представляет собой клавишу "Shift".
- "M" - это клавиша "M".
Синтаксис метода OnKey:
Application.OnKey(Key, Procedure)
Key: Этот аргумент определяет клавишу или комбинацию клавиш, для которой будет назначена действие. Например, "A" для клавиши "A", "^A" для "Ctrl+A", "+A" для "Shift+A", "^+A" для "Ctrl+Shift+A", и так далее.
Procedure: Этот аргумент определяет процедуру (или макрос если хотите) VBA, который будет выполнен при нажатии указанной клавиши или комбинации клавиш.
Вызов процедуры Sub с помощью ленты
Для вызова процедуры с помощью пользовательской ленты в приложениях Microsoft Office, таких как Excel или Word, вам потребуется создать собственную кнопку или элемент управления на ленте и назначить этой кнопке макрос (процедуру VBA). Вот как это можно сделать:
Шаг 1: Открытие пользовательской ленты (Ribbon)
1. Откройте приложение, в котором вы хотите настроить пользовательскую ленту (например, Microsoft Excel).
2. Нажмите правой кнопкой мыши на ленте или на пустой области ленты и выберите "Настроить ленту" (Customize the Ribbon). Это откроет диалоговое окно настройки ленты.
Шаг 2: Создание пользовательской вкладки и группы
1. В диалоговом окне настройки ленты, слева вы увидите список вкладок, а справа - доступные команды.
2. Вы можете создать свою собственную вкладку, выбрав "Новая вкладка" (New Tab). После создания вкладки, вы можете создать в ней группу, выбрав "Новая группа" (New Group).
3. После создания группы, перейдите к следующему шагу.
Шаг 3: Добавление элемента управления (кнопки)
1. Выберите созданную вами группу.
2. В списке команд справа, выберите "Макросы" (Macros) и найдите макрос (процедуру), которую вы хотите вызвать.
3. Перетащите выбранный макрос на вашу группу в ленте.
Шаг 4: Настройка кнопки (элемента управления)
1. Когда кнопка добавлена в вашу ленту, вы можете ее настроить. Для этого выберите кнопку в вашей группе.
2. Нажмите "Переименовать" (Rename), чтобы изменить название кнопки.
3. Вы также можете назначить значок кнопке, выбрав значок в разделе "Изменить значок" (Change Icon).
Шаг 5: Завершение настройки ленты
1. После настройки кнопки и группы, нажмите "ОК" или "Применить" в диалоговом окне настройки ленты.
Теперь у вас есть пользовательская кнопка на ленте, которая вызовет процедуру VBA, когда вы на нее нажмете. Вы можете использовать этот способ, чтобы сделать вашу процедуру более доступной для пользователя приложения Microsoft Office.
Вызов процедуры Sub из пользовательского контекстного меню
Достаточно сложная процедура, я этим НЕ пользуюсь (есть возможность ошибки, малоэффективность способа), но для общего так сказать образования.
Итак, для вызова процедуры из пользовательского контекстного меню в приложениях Microsoft Office, вы можете создать дополнение (Add-In) с помощью VBA, которое добавляет вашу процедуру в контекстное меню. Вот общие шаги, которые понадобятся для реализации этого:
1. Создание дополнения (Add-In):
- В Microsoft Excel, перейдите во вкладку "Разработчик" (Developer).
- Выберите Visual Basic для открытия VBA редактора.
- В меню "Вставка" (Insert) выберите "Модуль" (Module) для создания нового модуля.
- В созданном модуле напишите код вашей процедуры.
2. Настройка контекстного меню:
- В VBA редакторе, вы можете использовать событие `Workbook_SheetBeforeRightClick` или `Workbook_BeforeRightClick` для обработки, например, события щелчка правой кнопкой мыши на листе.
- В этом обработчике события, вы можете создать пользовательское контекстное меню и добавить в него пункт меню, который вызовет вашу процедуру.
Пример:
- Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
- Dim MyMenu As CommandBarPopup
- Dim MyButton As CommandBarButton
- Dim MyProcedure As String
- ' Указываем имя процедуры, которую нужно вызвать
- MyProcedure = "МояПроцедура"
- ' Создаем пользовательское контекстное меню
- Set MyMenu = Application.CommandBars.Add("MyContextMenu", , , True)
- ' Создаем пункт меню и связываем его с процедурой
- Set MyButton = MyMenu.Controls.Add(Temporary:=True)
- MyButton.Caption = "Вызвать Процедуру"
- MyButton.OnAction = "'" & ThisWorkbook.Name & "'!" & MyProcedure
- ' Показываем контекстное меню
- MyMenu.ShowPopup
- End Sub
В этом примере при щелчке правой кнопкой мыши на листе Excel будет отображено пользовательское контекстное меню, в котором будет доступен пункт "Вызвать Процедуру". При выборе этого пункта будет вызвана процедура "МояПроцедура".
3. Сохранение и использование дополнения:
- После написания и настройки вашего дополнения, сохраните его как дополнение Excel (`.xlam`) или как COM Add-In, в зависимости от вашего приложения Office.
- Затем установите это дополнение в вашем приложении Office через настройки COM Add-Ins (смотри ниже инструкцию. У меня Microsoft Office 2016).
После установки и активации дополнения, ваша процедура будет доступна в контекстном меню листа, и пользователи смогут вызвать ее из контекстного меню.
Хочу обратить внимание, что точные шаги могут немного различаться в зависимости от версии и приложения Microsoft Office.
Инструкция как установить это дополнение в Excel 2016 через настройки COM Add-Ins:
Для установки дополнения (Add-In) в Excel 2016 через настройки COM Add-Ins, выполните следующие шаги:
1. Сохраните ваше дополнение:
- Убедитесь, что ваше дополнение сохранено как файл с расширением `.xlam`.
2. Откройте Excel 2016:
- Запустите Microsoft Excel 2016.
3. Перейдите в Настройки COM Add-Ins:
- Нажмите на "Файл" (File) в верхнем левом углу Excel.
- Выберите "Параметры" (Options).
4. Перейдите в раздел "Надстройки" (Add-Ins):
- В окне "Параметры Excel" выберите "Надстройки" (Add-Ins) в левой части меню.
5. Выберите "Ком-надстройки" (COM Add-Ins):
- В разделе "Управление" (Manage), выберите "COM Add-Ins" и нажмите "Перейти" (Go).
6. Добавьте ваше дополнение:
- В диалоговом окне "Ком-надстройки" (COM Add-Ins), нажмите "Обзор" (Browse).
- Выберите ваш файл дополнения (`.xlam`) и нажмите "OK" или "Открыть".
7. Активируйте дополнение:
- Вернитесь к диалоговому окну "Ком-надстройки" (COM Add-Ins).
- Убедитесь, что флажок напротив вашего дополнения установлен.
- Нажмите "OK" или "ОК", чтобы закрыть диалоговое окно "Ком-надстройки" (COM Add-Ins).
8. Подтвердите дополнение:
- После закрытия окна "Параметры Excel" (Excel Options), Excel может попросить вас подтвердить загрузку дополнения. Нажмите "Да" (Yes) или "OK", чтобы разрешить загрузку.
Ваше дополнение должно быть успешно установлено и активировано в Excel 2016. Теперь оно будет доступно для использования, и его функциональность будет включена.
В следующей статье продолжим рассмотрение других способов вызова и выполнения процедур Sub в VBA.