Найти тему

📌 VBA Excel: 7 способов выполнить макрос (пример решения)

Оглавление

Если вы автоматизируете расчеты посредством применения VBA, то пожалуй, задавались вопросом:

- Как лучше выполнить макрос? 🤔

А способов действительно может быть несколько. Каждый из которых завит от поставленной задачи.

В этом обзоре обсудим основных 7 способов выполнить макрос.

VBA Excel: 7 способов выполнить макрос. Пример решения
VBA Excel: 7 способов выполнить макрос. Пример решения

📢 Файл с исходным кодом размещен в конце статьи 🔽

-3

▶️ Исходные данные

В качестве примера рассмотрим простой макрос который должен выполнять расчет для диапазона в столбце D:

-4

🔘 Пример макроса:

-5

📝 Краткое описание:

  • В данном случае обработку начинаем со 2-й строки, т.к. первая строка содержит заголовки столбцов.
  • Далее, проверяем наличие значения в столбцах В и C для каждой строки и выполняем умножение только там, где есть значения.
  • Так же, дополнительно установлена прорисовка границ ячеек и форматирование ячеек столбца D серым цветом RGB(230, 230, 230).

Подробно, описание цветов в формате RGB мы обсуждали в обзоре:

  • Если значение ячейки столбца А очищается, то строка удаляется.

Остается только вызвать макрос, и он выполнит работу за вас.

▶️ 1. Сочетание клавиш

Чтобы присвоить макросу сочетание клавиш выберете на вкладке "Разработчик" группу "Код" ➡️ "Макросы":

-6

В появившемся окне укажите нужный макрос и кликните "Параметры":

-7

Далее, назначьте сочетание клавиш, например:

Назначение сочетания клавиш
Назначение сочетания клавиш

Закройте все диалоговые окна и редактор VBA.

➡️ Теперь, когда вы нажимаете выбранное сочетание клавиш, макрос будет выполнен:

Вызов макроса назначенным сочетанием клавиш
Вызов макроса назначенным сочетанием клавиш

Важно! При выборе сочетания клавиш, убедитесь, что оно не конфликтует с существующими сочетаниями в Excel. Если выбранное вами сочетание клавиш уже используется, оно может быть переопределено.

▶️ 2. Назначить макрос объекту

Разместите на листе любой объект, например:

-10

Назначьте макрос объекту:

-11

➡️ Теперь при клике на данный объект действие определенное макросом будет выполнено.

▶️ 3. Выполнить макрос при каждом изменении на листе

Автоматизировать расчеты и избежать лишних действий со стороны пользователя поможет событие Worksheet_Change.

Для этого в модуле листа следует разместить код:

-12

➡️ Благодаря событию Worksheet_Change пересчет будет происходить при каждом изменении на листе:

-13

🔹 Аналогичный прием подробно обсуждался в обзоре:

▶️ 4. Выполнить макрос при клике на определенную ячейку

Помимо выше рассмотренных способов выполнить макрос можно при клике на ячейку, используя событие Worksheet_SelectionChange.

Вот пример того, как это можно сделать:

-14

➡️ Теперь, расчет будет выполнен при клике на ячейку Range("D1").

🔔 Важно! Убедитесь, что макрос доступен из данного листа (он может находиться в этом же модуле или другом модуле, но должны быть видимы из этого листа).

▶️ 5. Выполнить макрос при клике на любую пустую ячейку

Чтобы использовать такой подход, обозначим два исхода события:

  • одиночный клик на пустую ячейку:

Использовано событие Worksheet_SelectionChange:

 код будет выполняться при одиночном клике на пустую ячейку
код будет выполняться при одиночном клике на пустую ячейку

Пример того, как можно применить данный способ рассмотрен в обзоре:

  • двойной клик на пустую ячейку

Использовано событие Worksheet_BeforeDoubleClick:

В данном случае, код выполняется только при двойном клике на пустую ячейку
В данном случае, код выполняется только при двойном клике на пустую ячейку

▶️ 6. Назначить макрос элементу управления

В определенных случаях для взаимодействия с источником данных могут быть использованы различные элементы управления.

Например: для выбранного товара укажем в ячейке G1 стоимость товара с 5% скидкой.
  • элемент управления: поле со списком
-17

Для данного элемента укажите диапазон и связь с ячейкой, например:

-18

🔘 В модуле книге пишем код:

-19

Теперь нужно назначить данный макрос элементу управления:

-20

Это позволит выполнить расчет на основе выбранного значения:

-21

Аналогичный результат можно получить если использовать элементы управления ActiveX:

-22

🔘 В этом случае в модуль листа помещаем код:

-23

🔔 Обратите внимание! элементы управления ActiveX не предполагают прямое назначение макроса объекту. для них предусмотрено назначение макроса в модуле листа:

-24

▶️ 7. Выполнить макрос при условии

Данный способ подойдет, если выполнение определенных действий или расчетов предполагается только для ограниченного круга лиц.

Ограничиваем доступ к выполнению макроса путем запроса пароля
Ограничиваем доступ к выполнению макроса путем запроса пароля

Суть состоит в запросе пароля перед выполнением макроса.

-26

Если пользователь введет правильный пароль, то выполнится назначенный макрос.

Иначе, путь доступа будет запрещен:

-27

➡️ Таким образом можно управлять не только расчетами, но и доступом к определенным листам книги и т.п.

А какой способ выполнить макрос используете вы?

Пишите 💬 ответ в комментариях 😉

-28
Наша команда очень заинтересована в создании качественного и полезного контента. Поэтому, если Вам понравился этот урок, не забудьте поблагодарить автора лайком 👍. Если у Вас есть вопросы или своё решение, не стесняйтесь оставить комментарий 💬. Нужно решение для другой проблемы? Пожалуйста, напишите свой вопрос в комментариях 💬, и мы обязательно рассмотрим его в ближайшей теме обзора. Мы ценим Вашу обратную связь 💝, так как это помогает нам оценить, насколько данный материал был полезен для Вас
Наша команда очень заинтересована в создании качественного и полезного контента. Поэтому, если Вам понравился этот урок, не забудьте поблагодарить автора лайком 👍. Если у Вас есть вопросы или своё решение, не стесняйтесь оставить комментарий 💬. Нужно решение для другой проблемы? Пожалуйста, напишите свой вопрос в комментариях 💬, и мы обязательно рассмотрим его в ближайшей теме обзора. Мы ценим Вашу обратную связь 💝, так как это помогает нам оценить, насколько данный материал был полезен для Вас

📍 Рекомендуемые статьи 🔽

СКАЧАТЬ ПРИМЕР