Применение макросов в Excel помогает автоматизировать процессы и избежать повторения большого количества рутинных действий, которые мы не хотим выполнять вручную.
Давайте поподробнее разберемся в тонкостях работы с макросами.
Введение
Зачастую нам приходится выполнять одни и те же действия в Excel большое количество раз. C такой «рутинной работой» рано или поздно сталкивается почти каждый пользователь Excel — формирование ежедневных и еженедельных отчетов, обработка однообразных данных и т.д.
Например, Вам каждую неделю присылают отчет по продажам, который необходимо обработать, произвести некоторые расчеты, составить сводную таблицу и получить итог по результатам недели. Предположим, что на всю работу Вы тратите 3 часа, с помощью разработки и создания макроса Вы можете сократить время выполняемой работы до нескольких минут.
Макрос в Excel — это программа, записанная на языке программирования Visual Basic for Applications (VBA), которая выполняет определенную последовательность действий.
Как записать макрос в Excel?
В Excel есть встроенная программа макрорекордер, которая записывает каждое действие пользователя и переводит его в язык программирования VBA.
Такой способ записи макроса не требует специальных знаний программирования, поэтому запись макроса с помощью макрорекордера — самый простой способ создания макроса.
Однако при работе с макрорекордером есть свои недостатки:
- Макрорекордер записывает все Ваши действия, в том числе и случайно сделанные ошибки. Поэтому перед записью макроса четко продумайте список выполняемых действий — это поможет избежать ошибок;
- Макрорекордер записывает действия, выполненные только в программе Excel. Переключения на другие программы макрорекордер не записывает;
- Макрорекордер записывает только те действия, для которых есть кнопки или команды меню в Excel.
Запись макроса макрорекордером
Чтобы записать макрос в Excel нужно в нижней панели нажать на кнопку «Запись макроса» или перейти в панели инструментов на вкладку «Вид» в группу «Макросы» и выбрать «Запись макроса»:
Настраиваем поля записываемого макроса (можно оставить поля пустыми):
- Имя макроса — произвольное имя на русском или английском языке;
- Сочетание клавиш — комбинация клавиш, которой в дальнейшем будет запускаться макрос;
- Сохранить в — книга в которой будет сохраняться макрос.
Остановить запись макроса можно двумя способами: в нижней панели нажать на кнопку «Остановить запись» или перейти в панели инструментов на вкладку «Вид» в группу «Макросы» и выбрать «Остановить запись»:
Как выполнить макрос в Excel?
Чтобы выполнить и запустить макрос можно нажать выбранное сочетание клавиш или перейти на вкладку «Вид» в группу «Макросы», выбрать «Макросы» и нажать кнопку «Выполнить» или нажать сочетание клавиш Alt+F8:
Просмотр кода макроса
Для просмотра кода макроса нужно перейти на вкладку «Вид» в группу «Макросы» и выбрать «Макросы»,а затем нажать кнопку «Изменить»:
При знании языка VBA код макроса можно либо изменить, например, для удаления ошибок или для добавления новых действий для данного макроса, либо создать макрос с нуля на Visual Basic.
Резюме
Для создания макроса в Excel нужно выполнить следующие шаги:
- Создание макроса. Выбрать на панели инструментов «Вид» -> «Макросы» -> «Запись макроса» и при необходимости заполнить настройки макроса;
- Запись макроса. Выполнить требуемые действия;
- Остановить запись макроса. Выбрать на панели инструментов «Вид» -> «Макросы» -> «Остановить запись».
Удачи вам и до скорых встреч на страницах блога Tutorexcel.ru!
что мне надо сделать чтобы не запускать его постоянно в VB при открытии документа, а что бы он делал это сам автоматически. И еще вопрос можно ли как-то в поле со списком или в combobox вставить названия таблиц, и при выборе определенного названия в определенном диапазоне открывалась нужная таблица? Спасибо.
Вам необходимо зайти в VBA, выбрать в редакторе модуль «ЭтаКнига» и затем в код модуля добавить стандартный макрос:
Workbook_Open – событие, происходящее при открытии книги. Соответственно, данный макрос будет автоматически запускаться при каждом открытии данной книги.
Добрый день, создатели столь замечательного сайта. Спасибо вам за столь интересный материал. Готов частично оплатить ваши труды в размере одной тысячи рублей, если вы укажите ваши реквизиты для оплаты.
Доброго времени суток.
Есть книга с несколькими макросами
Макрос_1
Макрос_2
Макрос_n
В каждом макросе есть одна и таже операция ( напр Range(«D4:F8»). Clear)
Здесь разумно сделать еще один «Clear_Макрос»
Как прописать команду чтобы машина прерывала выполнение Макроса_n и переходила на Clear_Макрос, а потом возвращалась и продолжала выполнять Макрос_n ?
т.е. меня интересут что-то аналогичное GoTo — Return которое работает между мкросами
Спасибо
Вы можете прямо в теле макроса (1, 2, … , n) вызвать другой макрос (Clear).
Попробуйте в нужном месте исходного макроса написать Call Clear_Макрос.
спасибо. за оперативный ответ.
все получилось .
А выполнимо ли такое «Хочу»
sub Clear_Макрос ()
Range(Cells(3, 4), (8, i)). Clear
End Sub
sub Макрос_1 ()
…
i=7
Call Clear_Макрос
…
End
sub Макрос_2 ()
…
i=4
Call Clear_Макрос
…
End
я хочу чтобы вместе с командой Call передавалось значение i
И если Clear_Макрос получил вызов от Макрос_2 тогда значение i на Clear_Макрос , было бы равно 4
чтобы Clear_Макрос менял свою формулу на Range(Cells(3, 4), (8, 4)) или Range(Cells(3, 4), (8, 7)).
т.е. я хочу в «чужой монастырь со своим уставом»
Да, так тоже можно.
Нужно в макросе Clear_Макрос прописать нужные аргументы (в данном случае только 1 переменная i), а затем при вызове макроса указать численные значения этих аргументов.
Обращение к массиву по имени.
дано
Лист2 (мне кажется это неважно)
D4:D10
красный
оранжевый
желтый
зеленый
голубой
синий
фиолетовый
На вкладке Формулы выбираем команду Присвоить имя : Color
Какой должен быть макрос чтобы можно было обратиться по имени (Color) и в диапазоне С2:Е2 Range(Cеlls(2,3), Cells(2,5) прописать: «желтый зеленый голубой» ?