Если вы автоматизируете расчеты посредством применения VBA, то пожалуй, задавались вопросом:
- Как лучше выполнить макрос? 🤔
А способов действительно может быть несколько. Каждый из которых завит от поставленной задачи.
В этом обзоре обсудим основных 7 способов выполнить макрос.
📢 Файл с исходным кодом размещен в конце статьи 🔽
▶️ Исходные данные
В качестве примера рассмотрим простой макрос который должен выполнять расчет для диапазона в столбце D:
🔘 Пример макроса:
📝 Краткое описание:
- В данном случае обработку начинаем со 2-й строки, т.к. первая строка содержит заголовки столбцов.
- Далее, проверяем наличие значения в столбцах В и C для каждой строки и выполняем умножение только там, где есть значения.
- Так же, дополнительно установлена прорисовка границ ячеек и форматирование ячеек столбца D серым цветом RGB(230, 230, 230).
Подробно, описание цветов в формате RGB мы обсуждали в обзоре:
- Если значение ячейки столбца А очищается, то строка удаляется.
Остается только вызвать макрос, и он выполнит работу за вас.
▶️ 1. Сочетание клавиш
Чтобы присвоить макросу сочетание клавиш выберете на вкладке "Разработчик" группу "Код" ➡️ "Макросы":
В появившемся окне укажите нужный макрос и кликните "Параметры":
Далее, назначьте сочетание клавиш, например:
Закройте все диалоговые окна и редактор VBA.
➡️ Теперь, когда вы нажимаете выбранное сочетание клавиш, макрос будет выполнен:
Важно! При выборе сочетания клавиш, убедитесь, что оно не конфликтует с существующими сочетаниями в Excel. Если выбранное вами сочетание клавиш уже используется, оно может быть переопределено.
▶️ 2. Назначить макрос объекту
Разместите на листе любой объект, например:
Назначьте макрос объекту:
➡️ Теперь при клике на данный объект действие определенное макросом будет выполнено.
▶️ 3. Выполнить макрос при каждом изменении на листе
Автоматизировать расчеты и избежать лишних действий со стороны пользователя поможет событие Worksheet_Change.
Для этого в модуле листа следует разместить код:
➡️ Благодаря событию Worksheet_Change пересчет будет происходить при каждом изменении на листе:
🔹 Аналогичный прием подробно обсуждался в обзоре:
▶️ 4. Выполнить макрос при клике на определенную ячейку
Помимо выше рассмотренных способов выполнить макрос можно при клике на ячейку, используя событие Worksheet_SelectionChange.
Вот пример того, как это можно сделать:
➡️ Теперь, расчет будет выполнен при клике на ячейку Range("D1").
🔔 Важно! Убедитесь, что макрос доступен из данного листа (он может находиться в этом же модуле или другом модуле, но должны быть видимы из этого листа).
▶️ 5. Выполнить макрос при клике на любую пустую ячейку
Чтобы использовать такой подход, обозначим два исхода события:
- одиночный клик на пустую ячейку:
Использовано событие Worksheet_SelectionChange:
Пример того, как можно применить данный способ рассмотрен в обзоре:
- двойной клик на пустую ячейку
Использовано событие Worksheet_BeforeDoubleClick:
▶️ 6. Назначить макрос элементу управления
В определенных случаях для взаимодействия с источником данных могут быть использованы различные элементы управления.
Например: для выбранного товара укажем в ячейке G1 стоимость товара с 5% скидкой.
- элемент управления: поле со списком
Для данного элемента укажите диапазон и связь с ячейкой, например:
🔘 В модуле книге пишем код:
Теперь нужно назначить данный макрос элементу управления:
Это позволит выполнить расчет на основе выбранного значения:
Аналогичный результат можно получить если использовать элементы управления ActiveX:
🔘 В этом случае в модуль листа помещаем код:
🔔 Обратите внимание! элементы управления ActiveX не предполагают прямое назначение макроса объекту. для них предусмотрено назначение макроса в модуле листа:
▶️ 7. Выполнить макрос при условии
Данный способ подойдет, если выполнение определенных действий или расчетов предполагается только для ограниченного круга лиц.
Суть состоит в запросе пароля перед выполнением макроса.
Если пользователь введет правильный пароль, то выполнится назначенный макрос.
Иначе, путь доступа будет запрещен:
➡️ Таким образом можно управлять не только расчетами, но и доступом к определенным листам книги и т.п.
А какой способ выполнить макрос используете вы?
Пишите 💬 ответ в комментариях 😉
📍 Рекомендуемые статьи 🔽