Как можно создавать макросы в excel

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Еще…Меньше

Если у вас есть Microsoft Excel задачи, которые вы делаете несколько раз, вы можете записать макрос, чтобы автоматизировать эти задачи. Макрос — это действие или набор действий, которые можно выполнить сколько угодно раз. При создании макроса записуются щелчки мышью и нажатия клавиш. После создания макроса его можно отредактировать, чтобы внести незначительные изменения в его работу.

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

Процедура

Изображение значка

Перед записью макроса    

Макросы и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта, поэтому сначала нужно включить ее. Дополнительные сведения см. в статье Отображение вкладки «Разработчик».

Вкладка "Разработчик" на ленте

Изображение значка

Запись макроса    

  1. В группе Код на вкладке Разработчик нажмите кнопку Запись макроса.

  2. При желании введите имя макроса в поле Имя макроса, введите сочетания клавиш в поле Сочетания клавиш и описание в поле Описание, а затем нажмите кнопку ОК, чтобы начать запись.

    Команда "Записать макрос" в группе "Код" на вкладке "Разработчик"

  3. Выполните действия, которые нужно автоматизировать, например ввести шаблонный текст или заполнить столбец данных.

  4. На вкладке Разработчик щелкните Остановить запись.

    Команда "Остановить запись" в группе "Код" на вкладке "Разработчик"

Изображение значка

Подробнее о макросах    

Вы можете узнать немного о языке программирования Visual Basic путем редактирования макроса.

Чтобы изменить макрос, в группе Код на вкладке Разработчик нажмите кнопку Макрос, выберите имя макроса и нажмите кнопку Изменить. При этом Visual Basic редактора.

Узнайте, как записанные действия отображаются как код. Возможно, какой-то код вам понятен, а часть может показаться немного неявным.

Поэкспериментируйте с кодом, закройте редактор Visual Basic и снова запустите макрос. На этот раз посмотрите, не произойдет ли что-то другое!

Дальнейшие действия

  • Дополнительные информацию о создании макроса см. в теме Создание и удаление макроса.

  • Чтобы узнать, как запускать макрос, см. в этой теме.

Процедура

Изображение значка

Перед записью макроса    

Убедитесь, что на ленте отображается вкладка Разработчик. По умолчанию вкладка Разработчик не отображается, поэтому сделайте следующее:

  1. Перейдите в Excel > параметры…> ленты & панель инструментов.

  2. В категории Настроить ленту в списке Основные вкладки установите флажок Разработчик, а затем нажмите кнопку Сохранить.

Изображение значка

Запись макроса    

  1. На вкладке Разработчик нажмите кнопку Запись макроса.

  2. При желании введите имя макроса в поле Имя макроса, введите сочетания клавиш в поле Сочетания клавиш и описание в поле Описание, а затем нажмите кнопку ОК, чтобы начать запись.

  3. Выполните действия, которые нужно автоматизировать, например ввести шаблонный текст или заполнить столбец данных.

  4. На вкладке Разработчик в группе Код нажмите кнопку Остановить запись.

Изображение значка

Подробнее о макросах    

Вы можете узнать немного о языке программирования Visual Basic путем редактирования макроса.

Чтобы изменить макрос, на вкладке Разработчик нажмите кнопку Макрос ,выберите имя макроса и нажмите кнопку Изменить. При этом Visual Basic редактора.

Узнайте, как записанные действия отображаются как код. Возможно, какой-то код вам понятен, а часть может показаться немного неявным.

Поэкспериментируйте с кодом, закройте редактор Visual Basic и снова запустите макрос. На этот раз посмотрите, не произойдет ли что-то другое!

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

Нужна дополнительная помощь?

#Руководства

  • 23 май 2022

  • 0

Как с помощью макросов автоматизировать рутинные задачи в Excel? Какие команды они выполняют? Как создать макрос новичку? Разбираемся на примере.

Иллюстрация: Meery Mary для Skillbox Media

Ксеня Шестак

Рассказывает просто о сложных вещах из мира бизнеса и управления. До редактуры — пять лет в банке и три — в оценке имущества. Разбирается в Excel, финансах и корпоративной жизни.

Макрос (или макрокоманда) в Excel — алгоритм действий в программе, который объединён в одну команду. С помощью макроса можно выполнить несколько шагов в Excel, нажав на одну кнопку в меню или на сочетание клавиш.

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

Например, если нужно добавить название компании в несколько десятков документов и отформатировать его вид под корпоративный дизайн, можно делать это в каждом документе отдельно, а можно записать ход действий при создании первого документа в макрос — и затем применить его ко всем остальным. Второй вариант будет гораздо проще и быстрее.

В статье разберёмся:

  • как работают макросы и как с их помощью избавиться от рутины в Excel;
  • какие способы создания макросов существуют и как подготовиться к их записи;
  • как записать и запустить макрос начинающим пользователям — на примере со скриншотами.

Общий принцип работы макросов такой:

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

Макросы могут выполнять любые действия, которые в них запишет пользователь. Вот некоторые команды, которые они умеют делать в Excel:

  • Автоматизировать повторяющиеся процедуры.

    Например, если пользователю нужно каждый месяц собирать отчёты из нескольких файлов в один, а порядок действий каждый раз один и тот же, можно записать макрос и запускать его ежемесячно.

  • Объединять работу нескольких программ Microsoft Office.

    Например, с помощью одного макроса можно создать таблицу в Excel, вставить и сохранить её в документе Word и затем отправить в письме по Outlook.

  • Искать ячейки с данными и переносить их в другие файлы.

    Этот макрос пригодится, когда нужно найти информацию в нескольких объёмных документах. Макрос самостоятельно отыщет её и принесёт в заданный файл за несколько секунд.

  • Форматировать таблицы и заполнять их текстом.

    Например, если нужно привести несколько таблиц к одному виду и дополнить их новыми данными, можно записать макрос при форматировании первой таблицы и потом применить его ко всем остальным.

  • Создавать шаблоны для ввода данных.

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

  • Создавать новые функции Excel.

    Если пользователю понадобятся дополнительные функции, которых ещё нет в Excel, он сможет записать их самостоятельно. Все базовые функции Excel — это тоже макросы.

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

В Excel и других программах Microsoft Office макросы создаются в виде кода на языке программирования VBA (Visual Basic for Applications). Этот язык разработан в Microsoft специально для программ компании — он представляет собой упрощённую версию языка Visual Basic. Но это не значит, что для записи макроса нужно уметь кодить.

Есть два способа создания макроса в Excel:

  • Написать макрос вручную.

    Это способ для продвинутых пользователей. Предполагается, что они откроют окно Visual Basic в Еxcel и самостоятельно напишут последовательность действий для макроса в виде кода.

  • Записать макрос с помощью кнопки меню Excel.

    Способ подойдёт новичкам. В этом варианте Excel запишет программный код вместо пользователя. Нужно нажать кнопку записи и выполнить все действия, которые планируется включить в макрос, и после этого остановить запись — Excel переведёт каждое действие и выдаст алгоритм на языке VBA.

Разберёмся на примере, как создать макрос с помощью второго способа.

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

Так выглядят таблицы с продажами автосалона в первоначальном виде
Скриншот: Skillbox Media

Пользоваться таким отчётом неудобно — нужно сделать его наглядным. Запишем макрос при форматировании таблицы с продажами за январь и затем применим его к двум другим таблицам.


Готовимся к записи макроса

Кнопки для работы с макросами в Excel находятся во вкладке «Разработчик». Эта вкладка по умолчанию скрыта, поэтому для начала разблокируем её.

В операционной системе Windows это делается так: переходим во вкладку «Файл» и выбираем пункты «Параметры» → «Настройка ленты». В открывшемся окне в разделе «Основные вкладки» находим пункт «Разработчик», отмечаем его галочкой и нажимаем кнопку «ОК» → в основном меню Excel появляется новая вкладка «Разработчик».

В операционной системе macOS это нужно делать по-другому. В самом верхнем меню нажимаем на вкладку «Excel» и выбираем пункт «Параметры…».

Нажимаем сюда, чтобы вызвать панель с дополнительными параметрами Excel в macOS
Скриншот: Skillbox Media

В появившемся окне нажимаем кнопку «Лента и панель».

Выбираем параметр «Лента и панель»
Скриншот: Skillbox Media

Затем в правой панели «Настроить ленту» ищем пункт «Разработчик» и отмечаем его галочкой. Нажимаем «Сохранить».

Отмечаем пункт «Разработчик» и сохраняем изменения
Скриншот: Skillbox Media

Готово — вкладка «Разработчик» появилась на основной панели Excel.

Теперь можно работать с макросами
Скриншот: Skillbox Media

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

Перед записью макросов нужно сохранить документ в формате с их поддержкой
Скриншот: Skillbox Media

Перед началом записи макроса важно знать об особенностях его работы:

  • Макрос записывает все действия пользователя.

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

  • Работу макроса нельзя отменить.

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

  • Макрос выполняет свой алгоритм только для записанного диапазона таблиц.

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

Для начала записи макроса перейдём на вкладку «Разработчик» и нажмём кнопку «Записать макрос».

Нажимаем сюда, чтобы начать запись макроса
Скриншот: Skillbox Media

Появляется окно для заполнения параметров макроса. Нужно заполнить поля: «Имя макроса», «Сохранить в», «Сочетание клавиш», «Описание».

Так выглядит окно с параметрами макроса
Скриншот: Skillbox Media

«Имя макроса» — здесь нужно придумать и ввести название для макроса. Лучше сделать его логически понятным, чтобы в дальнейшем можно было быстро его найти.

Первым символом в названии обязательно должна быть буква. Другие символы могут быть буквами или цифрами. Важно не использовать пробелы в названии — их можно заменить символом подчёркивания.

«Сохранить в» — здесь нужно выбрать книгу, в которую макрос сохранится после записи.

Если выбрать параметр «Эта книга», макрос будет доступен при работе только в этом файле Excel. Чтобы макрос был доступен всегда, нужно выбрать параметр «Личная книга макросов» — Excel создаст личную книгу макросов и сохранит новый макрос в неё.

«Сочетание клавиш» — здесь к уже выбранным двум клавишам (Ctrl + Shift в системе Windows и Option + Cmd в системе macOS) нужно добавить третью клавишу. Это должна быть строчная или прописная буква, которую ещё не используют в других быстрых командах компьютера или программы Excel.

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

«Описание» — необязательное поле, но лучше его заполнять. Например, можно ввести туда последовательность действий, которые планируется записать в этом макросе. Так не придётся вспоминать, какие именно команды выполнит этот макрос, если нужно будет запустить его позже. Плюс будет проще ориентироваться среди других макросов.

В нашем случае с форматированием таблицы заполним поля записи макроса следующим образом и нажмём «ОК».

Заполняем поля и жмём «ОК», чтобы начать запись
Скриншот: Skillbox Media

После этого начнётся запись макроса — в нижнем левом углу окна Excel появится значок записи.

Началась запись макроса — теперь в него попадут все клики мышки и нажатия клавиш
Скриншот: Skillbox Media

Пока идёт запись, форматируем таблицу с продажами за январь: меняем ширину всех столбцов, данные во всех ячейках располагаем по центру, выделяем шапку таблицы цветом и жирным шрифтом, рисуем границы.

Важно: в нашем случае у таблиц продаж за январь, февраль и март одинаковое количество столбцов, но разное количество строк. Чтобы в случае со второй и третьей таблицей макрос сработал корректно, при форматировании выделим диапазон так, чтобы в него попали не только строки самой таблицы, но и строки ниже неё. Для этого нужно выделить столбцы в строке с их буквенным обозначением A–G, как на рисунке ниже.

Так макрос будет работать и для таблиц с большим количеством строк
Скриншот: Skillbox Media

Если выбрать диапазон только в рамках первой таблицы, то после запуска макроса в таблице с большим количеством строк она отформатируется только частично.

Так макрос отформатирует только выбранные строки: если в других таблицах строк окажется больше, они останутся в первоначальном виде
Скриншот: Skillbox Media

После всех манипуляций с оформлением таблица примет такой вид:

Так выглядит таблица после форматирования
Скриншот: Skillbox Media

Проверяем, все ли действия с таблицей мы выполнили, и останавливаем запись макроса. Сделать это можно двумя способами:

  • Нажать на кнопку записи в нижнем левом углу.
  • Перейти во вкладку «Разработчик» и нажать кнопку «Остановить запись».

Нажимаем сюда, чтобы остановить запись макроса
Скриншот: Skillbox Media

Готово — мы создали макрос для форматирования таблиц в границах столбцов A–G. Теперь его можно применить к другим таблицам.


Запускаем макрос

Перейдём в лист со второй таблицей «Февраль_2022». В первоначальном виде она такая же нечитаемая, как и первая таблица до форматирования.

Так выглядит таблица до запуска макроса
Скриншот: Skillbox Media

Отформатируем её с помощью записанного макроса. Запустить макрос можно двумя способами:

  • Нажать комбинацию клавиш, которую выбрали при заполнении параметров макроса — в нашем случае Option + Cmd + Ф.
  • Перейти во вкладку «Разработчик» и нажать кнопку «Макросы».

Нажимаем сюда, чтобы вызвать панель для выбора макроса
Скриншот: Skillbox Media

Появляется окно — там выбираем макрос, который нужно запустить. В нашем случае он один — «Форматирование_таблицы». Под ним отображается описание того, какие действия он включает. Нажимаем «Выполнить».

Нажимаем сюда, чтобы запустить макрос для форматирования таблицы
Скриншот: Skillbox Media

Готово — вторая таблица с помощью макроса форматируется так же, как и первая.

За пару секунд с помощью макроса исходная таблица принимает такой вид
Скриншот: Skillbox Media

То же самое можно сделать и на третьем листе для таблицы продаж за март. Более того, этот же макрос можно будет запустить и в следующем квартале, когда сервис автосалона выгрузит таблицы с новыми данными.

Научитесь: Excel + Google Таблицы с нуля до PRO
Узнать больше

Введение

Всем нам приходится — кому реже, кому чаще — повторять одни и те же действия и операции в Excel. Любая офисная работа предполагает некую «рутинную составляющую» — одни и те же еженедельные отчеты, одни и те же действия по обработке поступивших данных, заполнение однообразных таблиц или бланков и т.д. Использование макросов и пользовательских функций позволяет автоматизировать эти операции, перекладывая монотонную однообразную работу на плечи Excel. Другим поводом для использования макросов в вашей работе может стать необходимость добавить в Microsoft Excel недостающие, но нужные вам функции. Например функцию сборки данных с разных листов на один итоговый лист, разнесения данных обратно, вывод суммы прописью и т.д.

Макрос — это запрограммированная последовательность действий (программа, процедура), записанная на языке программирования Visual Basic for Applications (VBA). Мы можем запускать макрос сколько угодно раз, заставляя Excel выполнять последовательность любых  нужных нам действий, которые нам не хочется выполнять вручную.

В принципе, существует великое множество языков программирования (Pascal, Fortran, C++, C#, Java, ASP, PHP…), но для всех программ пакета Microsoft Office стандартом является именно встроенный язык VBA. Команды этого языка понимает любое офисное приложение, будь то Excel, Word, Outlook или Access.

Способ 1. Создание макросов в редакторе Visual Basic

Для ввода команд и формирования программы, т.е. создания макроса необходимо открыть специальное окно — редактор программ на VBA, встроенный в Microsoft Excel.

  • В старых версиях (Excel 2003 и старше) для этого идем в меню Сервис — Макрос — Редактор Visual Basic (Toos — Macro — Visual Basic Editor).
  • В новых версиях (Excel 2007 и новее) для этого нужно сначала отобразить вкладку Разработчик (Developer). Выбираем Файл — Параметры — Настройка ленты (File — Options — Customize Ribbon) и включаем в правой части окна флажок Разработчик (Developer). Теперь на появившейся вкладке нам будут доступны основные инструменты для работы с макросами, в том числе и нужная нам кнопка Редактор Visual Basic (Visual Basic Editor)



    macro1.png:

К сожалению, интерфейс редактора VBA и файлы справки не переводятся компанией  Microsoft на русский язык, поэтому с английскими командами в меню и окнах придется смириться:

macro2.png

Макросы (т.е. наборы команд на языке VBA) хранятся в программных модулях. В любой книге Excel мы можем создать любое количество программных модулей и разместить там наши макросы. Один модуль может содержать любое количество макросов. Доступ ко всем модулям осуществляется с помощью окна Project Explorer в левом верхнем углу редактора (если его не видно, нажмите CTRL+R). Программные модули бывают нескольких типов для разных ситуаций:

  • Обычные модули — используются в большинстве случаев, когда речь идет о макросах. Для создания такого модуля выберите в меню Insert — Module. В появившееся окно нового пустого модуля можно вводить команды на VBA, набирая их с клавиатуры или копируя их из другого модуля, с этого сайта или еще откуда нибудь:

    macro3.png

  • Модуль Эта книга — также виден в левом верхнем углу редактора Visual Basic в окне, которое называется Project Explorer. В этот модуль обычно записываются макросы, которые должны выполнятся при наступлении каких-либо событий в книге (открытие или сохранение книги, печать файла и т.п.):

    macro4.png

  • Модуль листа — доступен через Project Explorer и через контекстное меню листа, т.е. правой кнопкой мыши по ярлычку листа — команда Исходный текст (View Source). Сюда записывают макросы, которые должны выполняться при наступлении определенных событий на листе (изменение данных в ячейках, пересчет листа, копирование или удаление листа и т.д.)

    macro5.png

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

macro6.png

Давайте разберем приведенный выше в качестве примера макрос Zamena:

  • Любой макрос должен начинаться с оператора Sub, за которым идет имя макроса и список аргументов (входных значений) в скобках. Если аргументов нет, то скобки надо оставить пустыми.
  • Любой макрос должен заканчиваться оператором End Sub.
  • Все, что находится между Sub и End Sub — тело макроса, т.е. команды, которые будут выполняться при запуске макроса. В данном случае макрос выделяет ячейку заливает выделенных диапазон (Selection) желтым цветом (код = 6) и затем проходит в цикле по всем ячейкам, заменяя формулы на значения. В конце выводится окно сообщения (MsgBox).

С ходу ясно, что вот так сразу, без предварительной подготовки и опыта в программировании вообще и на VBA в частности, сложновато будет сообразить какие именно команды и как надо вводить, чтобы макрос автоматически выполнял все действия, которые, например, Вы делаете для создания еженедельного отчета для руководства компании. Поэтому мы переходим ко второму способу создания макросов, а именно…

Способ 2. Запись макросов макрорекордером

Макрорекордер — это небольшая программа, встроенная в Excel, которая переводит любое действие пользователя на язык программирования VBA и записывает получившуюся команду в программный модуль. Если мы включим макрорекордер на запись, а затем начнем создавать свой еженедельный отчет, то макрорекордер начнет записывать команды вслед за каждым нашим действием и, в итоге, мы получим макрос создающий отчет как если бы он был написан программистом. Такой способ создания макросов не требует знаний пользователя о программировании и VBA и позволяет пользоваться макросами как неким аналогом видеозаписи: включил запись, выполнил операци, перемотал пленку и запустил выполнение тех же действий еще раз. Естественно у такого способа есть свои плюсы и минусы:

  • Макрорекордер записывает только те действия, которые выполняются в пределах окна Microsoft Excel. Как только вы закрываете Excel или переключаетесь в другую программу — запись останавливается.
  • Макрорекордер может записать только те действия, для которых есть команды меню или кнопки в Excel. Программист же может написать макрос, который делает то, что Excel никогда не умел (сортировку по цвету, например или что-то подобное).
  • Если во время записи макроса макрорекордером вы ошиблись — ошибка будет записана. Однако смело можете давить на кнопку отмены последнего действия (Undo) — во время записи макроса макрорекордером она не просто возрвращает Вас в предыдущее состояние, но и стирает последнюю записанную команду на VBA.

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

  • в Excel 2003 и старше — выбрать в меню Сервис — Макрос — Начать запись (Tools — Macro — Record New Macro)
  • в Excel 2007 и новее — нажать кнопку Запись макроса (Record macro) на вкладке Разработчик (Developer)

Затем необходимо настроить параметры записываемого макроса в окне Запись макроса:

macro7.png

  • Имя макроса — подойдет любое имя на русском или английском языке. Имя должно начинаться с буквы и не содержать пробелов и знаков препинания.
  • Сочетание клавиш — будет потом использоваться для быстрого запуска макроса. Если забудете сочетание или вообще его не введете, то макрос можно будет запустить через меню Сервис — Макрос — Макросы — Выполнить (Tools — Macro — Macros — Run) или с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или нажав ALT+F8.
  • Сохранить в… — здесь задается место, куда будет сохранен текст макроса, т.е. набор команд на VBA из которых и состоит макрос.:
    • Эта книга — макрос сохраняется в модуль текущей книги и, как следствие, будет выполнятся только пока эта книга открыта в Excel
    • Новая книга — макрос сохраняется в шаблон, на основе которого создается любая новая пустая книга в Excel, т.е. макрос будет содержаться во всех новых книгах, создаваемых на данном компьютере начиная с текущего момента
    • Личная книга макросов — это специальная книга Excel  с именем Personal.xls, которая используется как хранилище макросов. Все макросы из Personal.xls загружаются в память при старте Excel и могут быть запущены в любой момент и в любой книге.

После включения записи и выполнения действий, которые необходимо записать, запись можно остановить командой Остановить запись (Stop Recording).

Запуск и редактирование макросов

Управление всеми доступными макросами производится в окне, которое можно открыть с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или — в старых версиях Excel — через меню Сервис — Макрос — Макросы (Tools — Macro — Macros):

macro8.png

  • Любой выделенный в списке макрос можно запустить кнопкой Выполнить (Run).
  • Кнопка Параметры (Options) позволяет посмотреть и отредактировать сочетание клавиш для быстрого запуска макроса.
  • Кнопка Изменить (Edit) открывает редактор Visual Basic (см. выше) и позволяет просмотреть и отредактировать текст макроса на VBA.

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

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

Кнопка на панели инструментов в Excel 2003 и старше

Откройте меню Сервис — Настройка (Tools — Customize) и перейдите на вкладку Команды (Commands). В категории Макросы легко найти веселый желтый «колобок» — Настраиваемую кнопку (Custom button):

macro9.gif

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

macro10.gif

Кнопка на панели быстрого доступа в Excel 2007 и новее

Щелкните правой кнопкой мыши по панели быстрого доступа в левом верхнем углу окна Excel и выберите команду Настройка панели быстрого доступа (Customise Quick Access Toolbar):

macro11.png

Затем в открывшемся окне выберите категорию Макросы и при помощи кнопки Добавить (Add) перенесите выбранный макрос в правую половину окна, т.е. на панель быстрого доступа:

macro12.png

Кнопка на листе

Этот способ подходит для любой версии Excel. Мы добавим кнопку запуска макроса прямо на рабочий лист, как графический объект. Для этого:

  • В Excel 2003 и старше — откройте панель инструментов Формы через меню Вид — Панели инструментов — Формы (View — Toolbars — Forms)
  • В Excel 2007 и новее — откройте выпадающий список Вставить (Insert) на вкладке Разработчик (Developer) 

Выберите объект Кнопка (Button):

macro13.png

Затем нарисуйте кнопку на листе, удерживая левую кнопку мыши. Автоматически появится окно, где нужно выбрать макрос, который должен запускаться при щелчке по нарисованной кнопке.

Создание пользовательских функций на VBA

Создание пользовательских функций или, как их иногда еще называют, UDF-функций (User Defined Functions) принципиально не отличается от создания макроса в обычном программном модуле. Разница только в том, что макрос выполняет последовательность действий с объектами книги (ячейками, формулами и значениями, листами, диаграммами и т.д.), а пользовательская функция — только с теми значениями, которые мы передадим ей как аргументы (исходные данные для расчета).

Чтобы создать пользовательскую функцию для расчета, например, налога на добавленную стоимость (НДС) откроем редактор VBA, добавим новый модуль через меню Insert — Module и введем туда текст нашей функции:

macro14.png

Обратите внимание, что в отличие от макросов функции имеют заголовок Function вместо Sub и непустой список аргументов (в нашем случае это Summa). После ввода кода наша функция становится доступна в обычном окне Мастера функций (Вставка — Функция) в категории Определенные пользователем (User Defined):

macro15.png

После выбора функции выделяем ячейки с аргументами (с суммой, для которой надо посчитать НДС) как в случае с обычной функцией:

macro16.png

Содержание

  1. Способы записи макросов в Excel
  2. Создание макросов
  3. Создать макрос в Excel с помощью макрорекордера
  4. Написание макросов в Excel
  5. Настройка разрешения для использования макросов в Excel
  6. Вариант 1: Автоматическая запись макросов
  7. Запуск макроса
  8. Редактирование макроса
  9. Создание кнопки для запуска макросов в панели инструментов
  10. Создание графической кнопки на листе Excel
  11. Чтобы записать макрос, следует:
  12. Отображение вкладки “Разработчик” в ленте меню
  13. Абсолютная и относительная запись макроса
  14. Расширение файлов Excel, которые содержат макросы
  15. Что нельзя сделать с помощью макрорекодера?
  16. Редактор Visual Basic
  17. Запускаем выполнение макроса
  18. Корректируем макрос

Макрос записывается двумя способами: автоматически и вручную. Воспользовавшись первым вариантом, вы просто записываете определенные действия в Microsoft Excel, которые выполняете в данный момент времени. Потом можно будет воспроизвести эту запись. Такой метод очень легкий и не требует знания кода, но применение его на практике довольно ограничено. Ручная запись, наоборот, требует знаний программирования, так как код набирается вручную с клавиатуры. Однако грамотно написанный таким образом код может значительно ускорить выполнение процессов.

Создание макросов

В Эксель создать макросы можно вручную или автоматически. Последний вариант предполагает запись действий, которые мы выполняем в программе, для их дальнейшего повтора. Это достаточно простой способ, пользователь не должен обладать какими-то навыками кодирования и т.д. Однако, в связи с этим, применить его можно не всегда.

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

Создать макрос в Excel с помощью макрорекордера

Для начала проясним, что собой представляет макрорекордер и при чём тут макрос.

Макрорекордер – это вшитая в Excel небольшая программка, которая интерпретирует любое действие пользователя в кодах языка программирования VBA и записывает в программный модуль команды, которые получились в процессе работы. То есть, если мы при включенном макрорекордере, создадим нужный нам ежедневный отчёт, то макрорекордер всё запишет в своих командах пошагово и как итог создаст макрос, который будет создавать ежедневный отчёт автоматически.

Этот способ очень полезен тем, кто не владеет навыками и знаниями работы в языковой среде VBA. Но такая легкость в исполнении и записи макроса имеет свои минусы, как и плюсы:

  • Записать макрорекордер может только то, что может пощупать, а значит записывать действия он может только в том случае, когда используются кнопки, иконки, команды меню и всё в этом духе, такие варианты как сортировка по цвету для него недоступна;
  • В случае, когда в период записи была допущена ошибка, она также запишется. Но можно кнопкой отмены последнего действия, стереть последнюю команду которую вы неправильно записали на VBA;
  • Запись в макрорекордере проводится только в границах окна MS Excel и в случае, когда вы закроете программу или включите другую, запись будет остановлена и перестанет выполняться.

Для включения макрорекордера на запись необходимо произвести следующие действия:

  • в версии Excel от 2007 и к более новым вам нужно на вкладке «Разработчик» нажать кнопочку «Запись макроса»
  • в версиях Excel от 2003 и к более старым (они еще очень часто используются) вам нужно в меню «Сервис» выбрать пункт «Макрос» и нажать кнопку «Начать запись».

Следующим шагом в работе с макрорекордером станет настройка его параметров для дальнейшей записи макроса, это можно произвести в окне «Запись макроса», где:

  • поле «Имя макроса» — можете прописать понятное вам имя на любом языке, но должно начинаться с буквы и не содержать в себе знаком препинания и пробелы;
  • поле «Сочетание клавиш» — будет вами использоваться, в дальнейшем, для быстрого старта вашего макроса. В случае, когда вам нужно будет прописать новое сочетание горячих клавиш, то эта возможность будет доступна в меню «Сервис» — «Макрос» — «Макросы» — «Выполнить» или же на вкладке «Разработчик» нажав кнопочку «Макросы»
  • поле «Сохранить в…» — вы можете задать то место, куда будет сохранен (но не послан) текст макроса, а это 3 варианта:
    • «Эта книга» — макрос будет записан в модуль текущей книги и сможет быть выполнен только в случае, когда данная книга Excel будет открыта;
    • «Новая книга» — макрос будет сохранен в тот шаблон, на основе которого в Excel создается пустая новая книга, а это значит, что макрос станет доступен во всех книгах, которые будут создаваться на этом компьютере с этого момента;
    • «Личная книга макросов» — является специальной книгой макросов Excel, которая называется «Personal.xls» и используется как специальное хранилище-библиотека макросов. При старте макросы из книги «Personal.xls» загружаются в память и могут быть запущены в любой книге в любой момент.

  • поле «Описание» — здесь вы можете описать, что и как должен делать макрос, для чего он создавался и какие функции несет, это чисто информативное поле, что называется на память.

После того как вы запустили и записали свой макрос, выполнив все нужные действия, запись можно прекратить командой «Остановить запись» и ваш макрос с помощью макрорекордера будет создан.

Написание макросов в Excel

Код макроса Excel написанный на языке Visual Basic for Application (VBA), а его выполняет инструмент приложения, к которому он присоединен. Большинство этих инструментов не доступно на уровне окна программы Excel. Как написать макрос.

Теперь продемонстрируем на примере информацию о том, как писать, редактировать и выполнять код макроса.

Чтобы написать макрос:

  1. Откройте рабочую книгу Excel, в которой необходимо использовать макрос: «РАЗРАБОТЧИК»-«Код»-«Visual Basic». Или нажмите комбинацию горячих клавиш ALT+F11.
  2. Перед началом работы в редакторе следует сделать простую настройку. Выберите инструмент в редакторе Visual Basic: «Tools»-«Options». И на вкладке «Editor» активируйте опцию «Require Variable Declaration». Это позволит реализовать автоматическое заполнение инструкций Options Explicit в начале каждого ново созданного кода. А в поле ввода «Tab Width:» укажите значение 2 вместо 4-х. Это позволит уменьшить ширину кода. Данная настройка редактора распространяется на все листы, но в границах одной рабочей книги.
  3. Выберите инструмент: «Insert»-«Module» чтобы создать новый стандартный модуль для макросов. В появившемся окне модуля под текстом Option Explicit введите следующий код макроса:
  4. SubMyMakros()
    DimpolzovatelAs String
    Dimdata_segodnyaAs Date
    polzovatel = Application.UserName
    data_segodnya = Now
    MsgBox"Макрос запустил пользователь: "& polzovatel & vbNewLine & data_segodnya
    End Sub

  5. Нажмите на кнопку в редакторе «Run Macro» или клавишу F5 на клавиатуре. В появившемся окне «Macros» нажмите на кнопку «Run», чтобы посмотреть результат работы макроса.

Примечание. Если в главном меню отсутствует закладка «РАЗРАБОТЧИК», тогда ее необходимо активировать в настройках: «ФАЙЛ»-«Параметры»-«Настроить ленту». В правом списке «Основные вкладки:» активируйте галочкой опцию «Разработчик» и нажмите на кнопку ОК.

Настройка разрешения для использования макросов в Excel

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

Вариант 1: Автоматическая запись макросов

Прежде чем начать автоматическую запись макросов, нужно включить их в программе Microsoft Excel. Для этого воспользуйтесь нашим отдельным материалом.

Подробнее: Включение и отключение макросов в Microsoft Excel

Когда все готово, приступаем к записи.

  1. Перейдите на вкладку «Разработчик». Кликните по кнопке «Запись макроса», которая расположена на ленте в блоке инструментов «Код».
  2. Открывается окно настройки записи макроса. Тут можно указать любое имя для него, если установленное по умолчанию вас не устраивает. Главное, чтобы имя это начиналось с буквы, а не с цифры, а также в названии не должно быть пробелов. Мы оставили название по умолчанию – «Макрос1».
  3. Тут же при желании можно установить сочетание клавиш, при нажатии на которые макрос будет запускаться. Первой клавишей обязательно должна быть Ctrl, а вторую пользователь устанавливает самостоятельно. Мы в качестве примера установили клавишу М.
  4. Далее следует определить, где будет храниться макрос. По умолчанию он расположен в этой же книге (файле), но при желании можно установить хранение в новой книге или в отдельной книге макросов. Мы оставим значение по умолчанию.
  5. В самом нижнем поле можно оставить любое подходящее по контексту описание макроса, но это делать не обязательно. Когда все настройки выполнены, жмем на кнопку «OK».
  6. После этого все ваши действия в данной книге (файле) Excel будут записываться в макрос до тех пор, пока вы сами не остановите запись.
  7. Для примера запишем простейшее арифметическое действие: сложение содержимого трех ячеек (=C4+C5+C6).
  8. Когда алгоритм был выполнен, щелкаем на кнопку «Остановить запись». Эта кнопка преобразовалась из кнопки «Запись макроса» после включения записи.

Запуск макроса

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

  1. Кликаем в том же блоке инструментов «Код» по кнопке «Макросы» или жмем сочетание клавиш Alt + F8.
  2. После этого открывается окно со списком записанных макросов. Ищем макрос, который мы записали, выделяем его и кликаем на кнопку «Выполнить».
  3. Можно поступить еще проще и не вызывать даже окно выбора макросов, так как на первом этапе мы задали сочетание клавиш для быстрого вызова макроса. В нашем случае это Ctrl + М. Жмем данную комбинацию на клавиатуре, после чего он запускается.
  4. Как видим, он выполнил в точности все те действия, которые были записаны ранее.

Редактирование макроса

Естественно, при желании вы можете корректировать созданный макрос, чтобы всегда поддерживать его в актуальном состоянии и исправлять некоторые неточности, допущенные во время процесса записи.

  1. Снова щелкаем на кнопку «Макросы». В открывшемся окне выбираем нужный и кликаем по кнопке «Изменить».
  2. Открывается «Microsoft Visual Basic» (VBE) – среда, где происходит их редактирование.
  3. Запись каждого макроса начинается с команды Sub, а заканчивается командой End Sub. Сразу же после Sub указывается имя макроса. Оператор Range("…").Select указывает выбор ячейки. Например, при команде «Range(«C4»).Select» выбирается ячейка «C4». Оператор ActiveCell.FormulaR1C1 используется для записи действий в формулах и других расчетов.
  4. Попытаемся немного изменить макрос, дописав выражение:

    Range("C3").Select
    ActiveCell.FormulaR1C1 = "11"

  5. Выражение ActiveCell.FormulaR1C1 = "=R[-3]C+R[-2]C+R[-1]C" заменим на ActiveCell.FormulaR1C1 = "= R[-4]C+R[-3]C+R[-2]C+R[-1]C".
  6. Закрываем редактор и запускаем макрос. Как видим, вследствие введенных нами изменений была добавлена дополнительная ячейка с данными. Она также была включена в расчет общей суммы.
  7. В случае если макрос слишком большой, его выполнение может занять значительное время, но внесением ручного изменения в код мы можем ускорить процесс. Добавляем команду Application.ScreenUpdating = False. Она позволит сохранить вычислительные мощности, а значит, ускорить работу. Это достигается путем отказа от обновления экрана во время выполнения вычислительных действий. Чтобы возобновить обновление после выполнения макроса, в его конце пишем команду Application.ScreenUpdating = True.
  8. Добавим также команду Application.Calculation = xlCalculationManual в начало кода, а в его конец дописываем Application.Calculation = xlCalculationAutomatic. Этим мы сначала отключаем автоматический пересчет результата после каждого изменения ячеек, а в конце макроса – включаем. Таким образом, Excel подсчитает результат только один раз, а не будет его постоянно пересчитывать, чем сэкономит время.

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

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

  1. Кнопка в панели инструментов в MS Excel 2003 и более старше. Вам нужно в меню «Сервис» в пункте «Настройки» перейти на доступную вкладку «Команды» и в окне «Категории» выбрать команду «Настраиваемая кнопка» обозначена жёлтым колобком или смайликом, кому как понятней или удобней. Вытащите эту кнопку на свою панель задач и, нажав правую кнопку мыши по кнопке, вызовите ее контекстное меню, в котором вы сможете отредактировать под свои задачи кнопку, указав для нее новую иконку, имя и назначив нужный макрос.
  2. Кнопка в панели вашего быстрого доступа в MS Excel 2007 и более новее. Вам нужно клацнуть правой кнопкой мышки на панели быстрого доступа, которое находится в верхнем левом углу окна MS Excel и в открывшемся контекстном меню выбираете пункт «Настройка панели быстрого доступа». В диалоговом окне настройки вы выбираете категорию «Макросы» и с помощью кнопки «Добавить» вы переносите выбранный со списка макрос в другую половинку окна для дальнейшего закрепления этой команды на вашей панели быстрого доступа.

Создание графической кнопки на листе Excel

Данный способ доступен для любой из версий MS Excel и заключается он в том, что мы вынесем кнопку прямо на наш рабочий лист как графический объект. Для этого вам нужно:

  • В MS Excel 2003 и более старше переходите в меню «Вид», выбираете «Панель инструментов» и нажимаете кнопку «Формы».
  • В MS Excel 2007 и более новее вам нужно на вкладке «Разработчик» открыть выпадающее меню «Вставить» и выбрать объект «Кнопка».

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

Чтобы записать макрос, следует:

  1. Войти во вкладку «разработчик».
  2. Выбрать запись макроса.
  3. Выбрать имя макроса (в имени нельзя использовать пробелы и дефисы);
  4. Можно выбрать сочетание клавиш, при нажатии которых будет начинаться запись макроса;
  5. Выбрать место сохранения:

— при сохранении в «Эта книга» макрос будет работать только в текущем документе;

— при сохранении в «Личная книга» макрос будет работать во всех документах на Вашем компьютере.

  1. Можно добавить описание макроса, оно поможет Вам вспомнить, какие действия совершает макрос.
  2. Нажать «Ок».
  3. Если вы не указали сочетание клавиш, запись начнется сразу после нажатия кнопки «Ок».
  4. Когда идет запись, Вы должны совершать требуемую последовательность действий.
  5. Когда закончите, нажимайте кнопку остановить запись.

Записанные макросы отображаются в книге макросов.

Чтобы их посмотреть следует нажать кнопку «макросы». В появившемся окне появится список макросов. Выберете нужный макрос и нажмите «Выполнить».

Макросы, находящиеся в книге можно редактировать. Для этого нужно выбрать макрос и нажать кнопку «Изменить». При нажатии на кнопку «Изменить» откроется редактор макросов с записанным на языке VBA скриптом.

Отображение вкладки “Разработчик” в ленте меню

Перед тем как записывать макрос, нужно добавить на ленту меню Excel вкладку “Разработчик”. Для этого выполните следующие шаги:

  1. Щелкните правой кнопкой мыши по любой из существующих вкладок на ленте и нажмите «Настроить ленту». Он откроет диалоговое окно «Параметры Excel».
  2. В диалоговом окне «Параметры Excel» у вас будут параметры «Настроить ленту». Справа на панели «Основные вкладки» установите флажок «Разработчик».
  3. Нажмите «ОК».

В результате на ленте меню появится вкладка “Разработчик”

Абсолютная и относительная запись макроса

Вы уже знаете про абсолютные и относительные ссылки в Excel? Если вы используете абсолютную ссылку для записи макроса, код VBA всегда будет ссылаться на те же ячейки, которые вы использовали. Например, если вы выберете ячейку A2 и введете текст “Excel”, то каждый раз – независимо от того, где вы находитесь на листе и независимо от того, какая ячейка выбрана, ваш код будет вводить текст “Excel” в ячейку A2.

Если вы используете параметр относительной ссылки для записи макроса, VBA не будет привязываться к конкретному адресу ячейки. В этом случае программа будет “двигаться” относительно активной ячейки. Например, предположим, что вы уже выбрали ячейку A1, и вы начинаете запись макроса в режиме относительной ссылки. Теперь вы выбираете ячейку A2, вводите текст Excel и нажмите клавишу Enter. Теперь, если вы запустите этот макрос, он не вернется в ячейку A2, вместо этого он будет перемещаться относительно активной ячейки. Например, если выбрана ячейка B3, она переместится на B4, запишет текст “Excel” и затем перейдет к ячейке K5.

Теперь давайте запишем макрос в режиме относительных ссылок:

  1. Выберите ячейку A1.
  2. Перейдите на вкладку “Разработчик”.
  3. В группе “Код” нажмите кнопку “Относительные ссылки”. Он будет подсвечиваться, указывая, что он включен.
  4. Нажмите кнопку “Запись макроса”.
  5. В диалоговом окне “Запись макроса” введите имя для своего макроса. Например, имя “ОтносительныеСсылки”.
  6. В опции “Сохранить в” выберите “Эта книга”.
  7. Нажмите “ОК”.
  8. Выберите ячейку A2.
  9. Введите текст “Excel” (или другой как вам нравится).
  10. Нажмите клавишу Enter. Курсор переместиться в ячейку A3.
  11. Нажмите кнопку “Остановить запись” на вкладке “Разработчик”.

Макрос в режиме относительных ссылок будет сохранен.

Теперь сделайте следующее.

  1. Выберите любую ячейку (кроме A1).
  2. Перейдите на вкладку “Разработчик”.
  3. В группе “Код” нажмите кнопку “Макросы”.
  4. В диалоговом окне “Макрос” кликните на сохраненный макрос “ОтносительныеСсылки”.
  5. Нажмите кнопку “Выполнить”.

Как вы заметите, макрос записал текст “Excel” не в ячейки A2. Это произошло, потому что вы записали макрос в режиме относительной ссылки. Таким образом, курсор перемещается относительно активной ячейки. Например, если вы сделаете это, когда выбрана ячейка B3, она войдет в текст Excel – ячейка B4 и в конечном итоге выберет ячейку B5.

Вот код, который записал макрорекодер:

 Sub ОтносительныеСсылки() ' ' ОтносительныеСсылки Макрос ' ' ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "Excel" ActiveCell.Offset(1, 0).Range("A1").Select End Sub 

Обратите внимание, что в коде нет ссылок на ячейки B3 или B4. Макрос использует Activecell для ссылки на текущую ячейку и смещение относительно этой ячейки.

Не обращайте внимание на часть кода Range(«A1»). Это один из тех случаев, когда макрорекодер добавляет ненужный код, который не имеет никакой цели и может быть удален. Без него код будет работать отлично.

Расширение файлов Excel, которые содержат макросы

Когда вы записываете макрос или вручную записываете код VBA в Excel, вам необходимо сохранить файл с расширением файла с поддержкой макросов (.xlsm).

До Excel 2007 был достаточен один формат файла – .xls. Но с 2007 года .xlsx был представлен как стандартное расширение файла. Файлы, сохраненные как .xlsx, не могут содержать в себе макрос. Поэтому, если у вас есть файл с расширением .xlsx, и вы записываете / записываете макрос и сохраняете его, он будет предупреждать вас о сохранении его в формате с поддержкой макросов и покажет вам следующее диалоговое окно:

Если вы выберете “Нет”, Excel сохранить файл в формате с поддержкой макросов. Но если вы нажмете “Да”, Excel автоматически удалит весь код из вашей книги и сохранит файл как книгу в формате .xlsx. Поэтому, если в вашей книге есть макрос, вам нужно сохранить его в формате .xlsm, чтобы сохранить этот макрос.

Что нельзя сделать с помощью макрорекодера?

Макро-рекордер отлично подходит для вас в Excel и записывает ваши точные шаги, но может вам не подойти, когда вам нужно сделать что-то большее.

  • Вы не можете выполнить код без выбора объекта. Например, если вы хотите, чтобы макрос перешел на следующий рабочий лист и выделил все заполненные ячейки в столбце A, не выходя из текущей рабочей таблицы, макрорекодер не сможет этого сделать. В таких случаях вам нужно вручную редактировать код.
  • Вы не можете создать пользовательскую функцию с помощью макрорекордера. С помощью VBA вы можете создавать пользовательские функции, которые можно использовать на рабочем листе в качестве обычных функций.
  • Вы не можете создавать циклы с помощью макрорекордера. Но можете записать одно действие, а цикл добавить вручную в редакторе кода.
  • Вы не можете анализировать условия: вы можете проверить условия в коде с помощью макрорекордера. Если вы пишете код VBA вручную, вы можете использовать операторы IF Then Else для анализа условия и запуска кода, если true (или другой код, если false).

Редактор Visual Basic

В Excel есть встроенный редактор Visual Basic, который хранит код макроса и взаимодействует с книгой Excel. Редактор Visual Basic выделяет ошибки в синтаксисе языка программирования и предоставляет инструменты отладки для отслеживания работы и обнаружения ошибок в коде, помогая таким образом разработчику при написании кода.

Запускаем выполнение макроса

Чтобы проверить работу записанного макроса, нужно сделать следующее:

  1. В той же вкладке (“Разработчик”) и группе “Код” нажимаем кнопку “Макросы” (также можно воспользоваться горячими клавишами Alt+F8).
  2. В отобразившемся окошке выбираем наш макрос и жмем по команде “Выполнить”.Примечание: Есть более простой вариант запустить выполнение макроса – воспользоваться сочетанием клавиш, которое мы задали при создании макроса.
  3. Результатом проверки будет повторение ранее выполненных (записанных) действий.

Корректируем макрос

Созданный макрос можно изменить. Самая распространенная причина, которая приводит к такой необходимости – сделанные при записи ошибки. Вот как можно отредактировать макрос:

  1. Нажимаем кнопку “Макросы” (или комбинацию Ctrl+F8).
  2. В появившемся окошке выбираем наш макрос и щелкаем “Изменить”.
  3. На экране отобразится окно редактора “Microsoft Visual Basic”, в котором мы можем внести правки. Структура каждого макроса следующая:
    • открывается с команды “Sub”, закрывается – “End Sub”;
    • после “Sub” отображается имя макроса;
    • далее указано описание (если оно есть) и назначенная комбинация клавиш;
    • команда “Range(“…”).Select” возвращает номер ячейки. К примеру, “Range(“B2″).Select” отбирает ячейку B2.
    • В строке “ActiveCell.FormulaR1C1” указывается значение ячейки или действие в формуле.
  4. Давайте попробуем скорректировать макрос, а именно, добавить в него ячейку B4 со значением 3. В код макроса нужно добавить следующие строки:
    Range("B4").Select
    ActiveCell.FormulaR1C1 = "3"
  5. Для результирующей ячейки D2, соответственно, тоже нужно изменить начальное выражение на следующее:
    ActiveCell.FormulaR1C1 = "=RC[-2]*R[1]C[-2]*R[2]C[-2]".Примечание: Обратите внимание, что адреса ячеек в данной строке (ActiveCell.FormulaR1C1) пишутся в стиле R1C1.
  6. Когда все готово, редактор можно закрывать (просто щелкаем на крестик в правом верхнем углу окна).
  7. Запускаем выполнение измененного макроса, после чего можем заметить, что в таблице появилась новая заполненная ячейка (B4 со значением “3”), а также, пересчитан результат с учетом измененной формулы.
  8. Если мы имеем дело с большим макросом, на выполнение которого может потребоваться немало времени, ручное редактирование изменений поможет быстрее справиться с задачей.
    • Добавив в конце команду Application.ScreenUpdating = False мы можем ускорить работу, так как во время выполнения макроса, изменения на экране отображаться не будут.
    • Если потребуется снова вернуть отображение на экране, пишем команду: Application.ScreenUpdating = True.
  9. Чтобы не нагружать программу пересчетом после каждого внесенного изменения, в самом начале пишем команду Application.Calculation = xlCalculationManual, а в конце – Application.Calculation = xlCalculationAutomatic. Теперь вычисление будет выполняться только один раз.

Источники

  • https://lumpics.ru/how-to-create-a-macro-in-excel/
  • https://MicroExcel.ru/sozdanie-makrosov/
  • http://topexcel.ru/kak-sozdat-makros-v-excel/
  • https://exceltable.com/vba-macros/kak-napisat-makros
  • https://office-guru.ru/excel/samouchitel-po-rabote-s-makrosami-v-excel-449.html
  • http://RuExcel.ru/simple-macros/
  • https://micro-solution.ru/excel/vba/first-macros

Содержание

  • Способы записи макросов в Excel
  • Вариант 1: Автоматическая запись макросов
    • Запуск макроса
    • Редактирование макроса
  • Вариант 2: Написание кода макроса с нуля
  • Вопросы и ответы

Как создать макрос в Excel

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

Макрос записывается двумя способами: автоматически и вручную. Воспользовавшись первым вариантом, вы просто записываете определенные действия в Microsoft Excel, которые выполняете в данный момент времени. Потом можно будет воспроизвести эту запись. Такой метод очень легкий и не требует знания кода, но применение его на практике довольно ограничено. Ручная запись, наоборот, требует знаний программирования, так как код набирается вручную с клавиатуры. Однако грамотно написанный таким образом код может значительно ускорить выполнение процессов.

Вариант 1: Автоматическая запись макросов

Прежде чем начать автоматическую запись макросов, нужно включить их в программе Microsoft Excel. Для этого воспользуйтесь нашим отдельным материалом.

Подробнее: Включение и отключение макросов в Microsoft Excel

Когда все готово, приступаем к записи.

  1. Перейдите на вкладку «Разработчик». Кликните по кнопке «Запись макроса», которая расположена на ленте в блоке инструментов «Код».
  2. Включение записи макроса в Microsoft Excel

  3. Открывается окно настройки записи макроса. Тут можно указать любое имя для него, если установленное по умолчанию вас не устраивает. Главное, чтобы имя это начиналось с буквы, а не с цифры, а также в названии не должно быть пробелов. Мы оставили название по умолчанию – «Макрос1».
  4. Тут же при желании можно установить сочетание клавиш, при нажатии на которые макрос будет запускаться. Первой клавишей обязательно должна быть Ctrl, а вторую пользователь устанавливает самостоятельно. Мы в качестве примера установили клавишу М.
  5. Далее следует определить, где будет храниться макрос. По умолчанию он расположен в этой же книге (файле), но при желании можно установить хранение в новой книге или в отдельной книге макросов. Мы оставим значение по умолчанию.
  6. В самом нижнем поле можно оставить любое подходящее по контексту описание макроса, но это делать не обязательно. Когда все настройки выполнены, жмем на кнопку «OK».
  7. Настройки записи макроса в Microsoft Excel

  8. После этого все ваши действия в данной книге (файле) Excel будут записываться в макрос до тех пор, пока вы сами не остановите запись.
  9. Для примера запишем простейшее арифметическое действие: сложение содержимого трех ячеек (=C4+C5+C6).
  10. Формула в Microsoft Excel

  11. Когда алгоритм был выполнен, щелкаем на кнопку «Остановить запись». Эта кнопка преобразовалась из кнопки «Запись макроса» после включения записи.
  12. Остановка записи макроса в Microsoft Excel

Запуск макроса

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

  1. Кликаем в том же блоке инструментов «Код» по кнопке «Макросы» или жмем сочетание клавиш Alt + F8.
  2. Переход к запуску макроса в Microsoft Excel

  3. После этого открывается окно со списком записанных макросов. Ищем макрос, который мы записали, выделяем его и кликаем на кнопку «Выполнить».
  4. Выбор макроса в Microsoft Excel

  5. Можно поступить еще проще и не вызывать даже окно выбора макросов, так как на первом этапе мы задали сочетание клавиш для быстрого вызова макроса. В нашем случае это Ctrl + М. Жмем данную комбинацию на клавиатуре, после чего он запускается.
  6. Как видим, он выполнил в точности все те действия, которые были записаны ранее.
  7. Макрос выполнен в Microsoft Excel

Редактирование макроса

Естественно, при желании вы можете корректировать созданный макрос, чтобы всегда поддерживать его в актуальном состоянии и исправлять некоторые неточности, допущенные во время процесса записи.

  1. Снова щелкаем на кнопку «Макросы». В открывшемся окне выбираем нужный и кликаем по кнопке «Изменить».
  2. Переход к изменению макроса в Microsoft Excel

  3. Открывается «Microsoft Visual Basic» (VBE) – среда, где происходит их редактирование.
  4. Microsoft Visual Basic  в Microsoft Excel

    Lumpics.ru

  5. Запись каждого макроса начинается с команды Sub, а заканчивается командой End Sub. Сразу же после Sub указывается имя макроса. Оператор Range("…").Select указывает выбор ячейки. Например, при команде «Range(«C4»).Select» выбирается ячейка «C4». Оператор ActiveCell.FormulaR1C1 используется для записи действий в формулах и других расчетов.
  6. Попытаемся немного изменить макрос, дописав выражение:

    Range("C3").Select
    ActiveCell.FormulaR1C1 = "11"

  7. Выражение ActiveCell.FormulaR1C1 = "=R[-3]C+R[-2]C+R[-1]C" заменим на ActiveCell.FormulaR1C1 = "= R[-4]C+R[-3]C+R[-2]C+R[-1]C".
  8. Изменение макроса  в Microsoft Excel

  9. Закрываем редактор и запускаем макрос. Как видим, вследствие введенных нами изменений была добавлена дополнительная ячейка с данными. Она также была включена в расчет общей суммы.
  10. В случае если макрос слишком большой, его выполнение может занять значительное время, но внесением ручного изменения в код мы можем ускорить процесс. Добавляем команду Application.ScreenUpdating = False. Она позволит сохранить вычислительные мощности, а значит, ускорить работу. Это достигается путем отказа от обновления экрана во время выполнения вычислительных действий. Чтобы возобновить обновление после выполнения макроса, в его конце пишем команду Application.ScreenUpdating = True.
  11. Добавим также команду Application.Calculation = xlCalculationManual в начало кода, а в его конец дописываем Application.Calculation = xlCalculationAutomatic. Этим мы сначала отключаем автоматический пересчет результата после каждого изменения ячеек, а в конце макроса – включаем. Таким образом, Excel подсчитает результат только один раз, а не будет его постоянно пересчитывать, чем сэкономит время.
  12. Изменение кода в Microsoft Visual Basic в Microsoft Excel

    Вариант 2: Написание кода макроса с нуля

    Продвинутые пользователи могут выполнять не только редактирование и оптимизацию записанных макросов, но и записывать их код с нуля.

    1. Чтобы приступить к этому, нужно нажать на кнопку «Visual Basic», которая расположена в самом начале ленты разработчика.
    2. Переход к ручному созданию макроса в Microsoft Excel

    3. Откроется окно редактора VBE, которое уже было продемонстрировано в предыдущем варианте.
    4. Окно редактора VBE в Microsoft Excel

    5. Программист пишет там код макроса вручную.

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

Еще статьи по данной теме:

Помогла ли Вам статья?

Создание макросов в программе Microsoft Excel

Запись макроса в Microsoft Excel

​Смотрите также​ курсора, когда информация​ помощью инструмента записи​:​ только пока эта​ то макрорекордер начнет​ такого модуля выберите​ работу на плечи​ переменных:​ применять функции VBA.​ to 10 Next​ результате оказываются в​

​ используется Selection.ClearContents. Ее​Узнайте о том, как​

Способы записи макросов

​Остановить запись​ записывать код макросов​

  • ​ как работает записанный​
  • ​Макросы программы Microsoft Excel​

​ о его размещении​ макросов.​Затем в открывшемся окне​ книга открыта в​ записывать команды вслед​ в меню​ Excel. Другим поводом​NN– номер текущей строки​ Всего в этом​Команда переводится на «человеческий»​ среде VBA. Собственно,​ выполнение означает очистку​ создавать и запускать​

​.​ с нуля. Для​ макрос, кликаем в​ позволяют значительно ускорить​ записывается в макро-адреса​Сначала надо включить панель​ выберите категорию​ Excel​

Автоматическая запись макросов

​ за каждым нашим​Insert — Module​ для использования макросов​ таблицы;​

Включение макросов в Microsoft Excel

​ языке программирования, созданном​ язык, как «Повторять​ сам код макроса​ содержимого выбранной ячейки.​ макросы. Дополнительные сведения​Более подробное изучение макроса​

Включение записи макроса в Microsoft Excel

​ того, чтобы приступить​ том же блоке​ работу с документами​ с жесткой привязкой​ разработчика. Для этого​Макросы​Новая книга​ действием и, в​. В появившееся окно​ в вашей работе​TP и TF –​ специально для написания​ от 1 до​ находится между строками​

​Прежде всего требуется создать​ см. в статье​   ​ к этому, нужно​ инструментов «Код» по​ в этом табличном​ к конкретной ячейке​ в меню «Файл»​и при помощи​- макрос сохраняется​ итоге, мы получим​ нового пустого модуля​

​ может стать необходимость​ планируемый и фактический​ приложений в «Эксель»​ 10 с шагом​ Sub Макрос1() и​ файл и сохранить​ Создание, выполнение, изменение​При редактировании макроса можно​ нажать на кнопку​ кнопке «Макросы», или​ редакторе. Это достигается​ в момент записи.​

​ открываем группу опций​ кнопки​ в шаблон, на​ макрос создающий отчет​ можно вводить команды​ добавить в Microsoft​ товарооборот;​

​ и Word, около​ один».​ End Sub.​

Настройки записи макроса в Microsoft Excel

​ его, присвоив имя​ и удаление макроса.​ немного изучить язык​ «Visual Basic», которая​ жмем сочетание клавиш​ путем автоматизации повторяющихся​ Абсолютные адреса ограничивают​ «Параметры». В появившемся​

​Добавить (Add)​ основе которого создается​ как если бы​ на VBA, набирая​

Формула в Microsoft Excel

​ Excel недостающие, но​SF и SP –​ 160 функций. Их​Если ставится задача получить​Если копирование было выполнено,​ и выбрав тип​

Остановка записи макроса в Microsoft Excel

Запуск макроса

​Немногие знают, что первая​ программирования Visual Basic.​ расположена в самом​ Alt+F8.​ действий, записанных в​ возможности макроса, если​ окне «Параметры Excel»​перенесите выбранный макрос​

Переход к запуску макроса в Microsoft Excel

​ любая новая пустая​ он был написан​ их с клавиатуры​ нужные вам функции.​ фактическая и планируемая​ можно разделить на​ столбец с квадратами,​

Выбор макроса в Microsoft Excel

​ например, из ячейки​ «Книга Excel с​ версия популярного продукта​Чтобы изменить макрос, в​ начале ленты разработчика.​После этого, открывается окно​ специальный код. Давайте​ будут добавляться /​ открываем группу «Настройка​ в правую половину​ книга в Excel,​ программистом. Такой способ​

​ или копируя их​ Например функцию сборки​ сумма издержек;​ несколько больших групп.​

Макрос выполнен в Microsoft Excel

Редактирование макроса

​ например, всех нечетных​ А1 в ячейку​ поддержкой макросов».​ Microsoft Excel появилась​ группе​После этого, открывается знакомое​ со списком записанных​

Переход к изменению макроса в Microsoft Excel

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

Microsoft Visual Basic в Microsoft Excel

​ т.е. макрос будет​ создания макросов не​ из другого модуля,​ данных с разных​IP и IF –​ Это:​ чисел из диапазона​ C1, то одна​Затем необходимо перейти в​ в 1985 году.​Код​ нам окно редактора​ макросов. Ищем макрос,​ макросы в программе​ листе Excel или​

​ на правую колонку​ панель быстрого доступа:​ содержаться во всех​

​ требует знаний пользователя​
​ с этого сайта​

​ листов на один​ планируемый и фактически​Математические функции. Применив их​

Изменение макроса в Microsoft Excel

​ от 1 до​ из строк кода​ приложение VB, для​ С тех пор​на вкладке​ VBE.​ который мы записали,​ Excel, и как​ список данных будет​ настроек под аналогичным​

​Кнопка на листе​ новых книгах, создаваемых​ о программировании и​ или еще откуда​ итоговый лист, разнесения​ уровень издержек.​ к аргументу, получают​ 11, то пишем:​ будет выглядеть, как​ чего достаточно воспользоваться​ он пережил несколько​Разработчик​Программист пишет там код​ выделяем его, и​ их можно отредактировать.​ становиться больше. Относительные​ названием «Настройка ленты».​Этот способ подходит для​ на данном компьютере​ VBA и позволяет​ нибудь:​

​ данных обратно, вывод​Обозначим теми же буквами,​ значение косинуса, натурального​For i = 1​ Range(“C1”).Select. В переводе​ комбинацией клавиш «Alt»​ модификаций и востребован​нажмите кнопку​ макроса вручную.​ жмем на кнопку​Скачать последнюю версию​ средства не привязывают​ В ней следует​ любой версии Excel.​ начиная с текущего​ пользоваться макросами как​Модуль Эта книга​

Изменение кода в Microsoft Visual Basic в Microsoft Excel

Написание кода макроса с нуля

​ суммы прописью и​ но с «приставкой»​ логарифма, целой части​ to 10 step​ это выглядит, как​ и «F11». Далее:​ у миллионов пользователей​Макросы​Как видим, макросы в​ «Выполнить».​ Excel​ курсор к конкретному​

Переход к ручному созданию макроса в Microsoft Excel

​ отметить галочкой опцию​ Мы добавим кнопку​ момента​

Окно редактора VBE в Microsoft Excel

​ неким аналогом видеозаписи:​- также виден​

​ т.д.​ Itog накопление итога​ и пр.​ 1 Next.​ «Диапазон(“C1”).Выделить», иными словами​в строке меню, расположенном​ по всему миру.​, выделите имя макроса​ Microsoft Excel могут​Можно поступить ещё проще,​Макрос можно записать двумя​ адресу ячейки.​ «Разработчик» как показано​ запуска макроса прямо​Личная книга макросов​

​ включил запись, выполнил​

lumpics.ru

Краткое руководство: создание макроса

​ в левом верхнем​​Макрос​ по данному столбцу.​Финансовые функции. Благодаря их​Здесь step — шаг.​ осуществляет переход в​ в верхней части​ При этом многие​ и нажмите кнопку​ значительно ускорить выполнение​ и не вызывать​ способами:​По умолчанию в Excel​ ниже на рисунке:​ на рабочий лист,​- это специальная​ операци, перемотал пленку​ углу редактора Visual​- это запрограммированная​ Например, ItogTP –​ наличию и используя​

​ В данном случае​ VBA Excel, в​ окна, нажимают на​ работают лишь с​Изменить​ рутинных и однообразных​ даже окно выбора​автоматически;​ включен режим «Абсолют»,​Теперь нам доступна на​ как графический объект.​ книга Excel с​ и запустил выполнение​ Basic в окне,​ последовательность действий (программа,​

​ касается столбца таблицы,​ программирование в Excel,​ он равен двум.​ ячейку С1.​ иконку рядом с​ малой толикой возможностей​. Запустится редактор Visual​ процессов. Но, в​ макросов. Мы же​вручную.​ но вы можете​ ленте новая закладка​

​ Для этого:​

Процедура

Изображение значка

​ именем​​ тех же действий​

​ которое называется Project​ процедура), записанная на​​ озаглавленного, как «планируемый​​ можно получать эффективные​ По умолчанию отсутствие​Активную часть кода завершает​ иконкой Excel;​ этого табличного процессора​ Basic.​

Вкладка

Изображение значка

​ большинстве случаев, для​​ помним, что записали​

  1. ​Воспользовавшись первым вариантом, вы​​ изменить его, включив​​ «Разработчик» со всеми​​В Excel 2003 и​​Personal.xls​​ еще раз. Естественно​​ Explorer. В этот​

  2. ​ языке программирования Visual​​ товарооборот».​​ инструменты для ведения​​ этого слова в​​ команда ActiveSheet.Paste. Она​​выбирают команду Mudule;​​ и даже не​Обратите внимание на то,​​ этого больше подходят​​ сочетание «горячих клавиш»​ просто записываете определенные​

    Команда

  3. ​ кнопку «Относительные ссылки»​ своими инструментами для​ старше — откройте​, которая используется как​

  4. ​ у такого способа​​ модуль обычно записываются​​ Basic for Applications​​Используя введенные обозначения, получаем​​ бухгалтерского учета и​

    Команда

Изображение значка

​ цикле означает, что​​ означает запись содержания​

​сохраняют, нажав на иконку​ догадываются, как им​ как в нем​

​ макросы, код которых​ для быстрого вызова​​ действия в программе​​ расположенную ниже под​​ автоматизации работы в​​ панель инструментов​​ хранилище макросов. Все​​ есть свои плюсы​ макросы, которые должны​​ (VBA). Мы можем​​ формулы для отклонений.​ осуществления финансовых расчетов.​

​ шаг единичный.​ выделенной ячейки (в​ с изображением floppy​ могло бы облегчить​ выглядят записанные действия.​

​ написан вручную, а​ макроса. В нашем​ Microsoft Excel, которые​ кнопкой «Запись макроса»​

Дальнейшие действия

  • ​ Excel и создания​Формы​ макросы из​ и минусы:​

  • ​ выполнятся при наступлении​ запускать макрос сколько​ Если требуется осуществить​

Процедура

Изображение значка

​Функции обработки массивов. К​​Полученные результаты нужно сохранять​

​ данном случае А1)​ disk;​ жизнь умение программирования​​ Возможно, часть кода​​ не автоматически записанные​​ случае, это Ctrl+М.​​ выполняете в данный​ на панели инструментов​ макросов.​

  1. ​через меню​​Personal.xls​​Макрорекордер записывает только те​​ каких-либо событий в​​ угодно раз, заставляя​​ расчет в %​​ ним относятся Array,​

  2. ​ в ячейки с​​ в выделенную ячейку​​пишут, скажем так, набросок​​ в Excel.​​ будет понятной.​​ действия. Кроме того,​​ Набираем данную комбинацию​ момент времени. Потом,​​ вкладки «Разработчик»:​​Макросы – это внутренние​

Изображение значка

​Вид — Панели инструментов​​загружаются в память​

  1. ​ действия, которые выполняются​​ книге (открытие или​​ Excel выполнять последовательность​​ имеем (F –​​ IsArray; LBound; UBound.​

  2. ​ номером (i,1). Тогда​​ С1.​​ кода.​​Программирование в Excel осуществляется​​Измените код, закройте редактор​​ код макроса можно​​ на клавиатуре, после​ можно будет воспроизвести​​Абсолютный отсчет ячеек, всегда​​ приложения, которые берут​ — Формы (View​

  3. ​ при старте Excel​ в пределах окна​ сохранение книги, печать​ любых нужных нам​

  4. ​ P) / P​​Функции VBA Excel для​​ при каждом запуске​​Циклы VBA помогают создавать​​Он выглядит следующим образом:​​ посредством языка программирования​​ Visual Basic и​

Изображение значка

​ оптимизировать через редактор​​ чего макрос запускается.​

​ эту запись. Данный​ ведется с исходного​ на себя всю​

​ — Toolbars -​ и могут быть​​ Microsoft Excel. Как​​ файла и т.п.):​ действий, которые нам​ * 100, а​ строки. Это достаточно​​ цикла с увеличением​​ различные макросы в​Sub program ()​

​ Visual Basic for​ запустите макрос повторно.​ VBE для ускорения​Как видим, макрос выполнил​ способ очень легкий,​

​ положения (адрес ячейки​ рутинную работу, облегчая​ Forms)​ запущены в любой​

Дальнейшие действия

​ только вы закрываете​Модуль листа​ не хочется выполнять​ в сумме —​ многочисленная группа. В​ i на величину​

support.office.com

VBA Excel: примеры программ. Макросы в Excel

​ Excel.​’Наш код​ Application, который изначально​ Посмотрите, что произойдет.​ процесса выполнения задачи.​ в точности все​ и не требует​ А1) – до​ жизнь пользователю. Каждый​В Excel 2007 и​ момент и в​ Excel или переключаетесь​- доступен через​ вручную.​ (F – P).​ нее входят, например,​ шага автоматически будет​Циклы VBA помогают создавать​

VBA Excel примеры программ

Что такое VBA

​End Sub​ встроен в самый​Дополнительные сведения о создании​Автор: Максим Тютюшев​ те действия, которые​ знания кода, но​ адреса курсора с​

​ пользователь может создать​ новее — откройте​ любой книге.​ в другую программу​ Project Explorer и​В принципе, существует великое​Результаты этих вычислений можно​ функции Space для​ расти и номер​ различные макросы. Предположим,​Обратите внимание, что строка​

​ известный табличный процессор​ макросов см. в​Примечание:​ были записаны ранее.​ применение его на​ вашими данными. Если​ макрос без знания​ выпадающий список​После включения записи и​ — запись останавливается.​ через контекстное меню​ множество языков программирования​ лучше всего сразу​ создания строки с​ у строки. Таким​ что имеется функция​ «’Наш код» будет​ от Microsoft.​ статье Создание и​ Мы стараемся как можно​Для того, чтобы отредактировать​ практике довольно ограничено.​

функции VBA

Объекты, коллекции, свойства и методы

​ вы сохранили ваш​ языков программирования. Для​Вставить (Insert)​ выполнения действий, которые​Макрорекордер может записать только​ листа, т.е. правой​ (Pascal, Fortran, C++,​ внести в соответствующие​ числом пробелов, равных​ образом, произойдет оптимизация​ y=x + x2​ выделена другим цветом​К его достоинствам специалисты​

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

​ C#, Java, ASP,​ ячейки таблицы «Эксель».​ целочисленному аргументу, или​ кода.​ + 3×3 –​ (зеленым). Причина в​ относят сравнительную легкость​Сведения о запуске макросов​

​ актуальными справочными материалами​ на кнопку «Макросы».​ требует знаний программирования,​ личных макросов (рекомендуется​ который запускается с​Разработчик (Developer)​

​ можно остановить командой​ которых есть команды​ ярлычку листа -​ PHP…), но для​Для итогов по факту​ Asc для перевода​В целом код будет​ cos(x). Требуется создать​ апострофе, поставленном в​ освоения. Как показывает​ см. в статье​ на вашем языке.​ В открывшемся окне​ так как код​ так и делать),​

​ помощью кнопки «Запись​ ​Остановить запись​ меню или кнопки​

циклы VBA

Как начать

​ команда​ всех программ пакета​ и прогнозу получают​ символов в код​ выглядеть, как:​ макрос для получения​

​ начале строки, который​ практика, азами VBA​ Запуск макроса.​ Эта страница переведена​ выбираем нужный макрос,​

  • ​ набирается вручную с​ то вы можете​ макроса».​Выберите объект​(Stop Recording)​
  • ​ в Excel. Программист​
  • ​Исходный текст (View Source)​ Microsoft Office стандартом​ по формулам ItogP=ItogP​
  • ​ ANSI. Все они​Sub program()​

​ ее графика. Сделать​

​ обозначает, что далее​

​ могут овладеть даже​

​Действия перед записью макроса​

​ автоматически, поэтому ее​ и кликаем по​ клавиатуры. Но, грамотно​ использовать свою программу​В этом режиме все​Кнопка (Button):​.​ же может написать​

​. Сюда записывают макросы,​ является именно встроенный​ + P и​ имеют широкое применение​For i = 1​ это можно только,​ следует комментарий.​ пользователи, которые не​   ​ текст может содержать​ кнопке «Изменить».​ написанный таким образом​ на других листах​ действия пользователя макрорекодер​

Макросы в Excel

​Затем нарисуйте кнопку на​Управление всеми доступными макросами​ макрос, который делает​ которые должны выполняться​ язык VBA. Команды​ ItogF=ItogF+ F.​ и позволяют работать​ To 10 Step​ используя циклы VBA.​Теперь вы можете написать​ имеют навыков профессионального​Убедитесь в том, что​ неточности и грамматические​Открывается Microsoft Visual Basic​ код, может значительно​ с аналогичными данными.​ в Excel записывает,​ листе, удерживая левую​ производится в окне,​ то, что Excel​

Пример 1

​ при наступлении определенных​ этого языка понимает​Для отклонений используют =​ со строками в​ 1 (можно записать​

​За начальное и конечное​

  • ​ любой код и​
  • ​ программирования. К особенностям​
  • ​ на ленте отображается​
  • ​ ошибки. Для нас​

​ (VBE) – среда,​ ускорить выполнение процессов.​ Независимо от того,​ переводя на язык​ кнопку мыши. Автоматически​ которое можно открыть​ никогда не умел​ событий на листе​ любое офисное приложение,​

​ (ItogF – ItogP)​ «Эксель», создавая приложения,​ просто For i​ значение аргумента функции​ создать для себя​ VBA относится выполнение​ вкладка​ важно, чтобы эта​ где происходит редактирование​

​Прежде, чем начать автоматическую​

  • ​ где ваш курсор​ программирования VBA-код в​
  • ​ появится окно, где​ с помощью кнопки​
  • ​ (сортировку по цвету,​ (изменение данных в​ будь то Excel,​

​ / ItogP *​ значительно облегчающие работу​ = 1 To​ берут x1=0 и​

​ новый инструмент в​ скрипта в среде​Разработчик​ статья была вам​ макросов.​ запись макросов, нужно​ позиционируется, когда вы​ автоматическом режиме. После​ нужно выбрать макрос,​Макросы (Macros)​ например или что-то​ ячейках, пересчет листа,​

​ Word, Outlook или​ 100, если расчет​ с этими таблицами.​ 10)​ x2=10. Кроме того,​ VBA Excel (примеры​ офисных приложений.​. По умолчанию вкладка​ полезна. Просим вас​Запись каждого макроса начинается​ включить макросы в​ начинаете запись макроса!​

​ завершения записи мы​ который должен запускаться​на вкладке​ подобное).​ копирование или удаление​ Access.​ ведется в процентах,​

Пример 2

​Функции преобразования типа данных.​Cells(i, 1).Value = i​ необходимо ввести константу​

​ программ см. далее).​Недостатком программы являются проблемы,​Разработчик​ уделить пару секунд​ с команды Sub,​ программе Microsoft Excel.​ Даже если он​ получаем готовую программу,​ при щелчке по​Разработчик (Developer)​

​Если во время записи​ листа и т.д.)​Для ввода команд и​ а в случае​ Например, CVar возвращает​ ^ 2 (т.е.​ — значение для​ Конечно, тем, кто​ связанные с совместимостью​

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

​или — в​

​ макроса макрорекордером вы​

​Обычный макрос, введенный в​

​ формирования программы, т.е.​

​ суммарной величины —​

​ значение аргумента Expression,​ в ячейку (i,1)​ шага изменения аргумента​ знаком с азами​ различных версий. Они​

​ необходимо выполнить указанные​ ли она вам,​

​ End Sub. Сразу​ «Разработчик». Кликаем по​ ячейке A1, ваш​ те действия, которые​

​Создание пользовательских функций или,​ старых версиях Excel​ ошиблись — ошибка​ стандартный модуль выглядит​

​ создания макроса необходимо​ (ItogF – ItogP).​

​ преобразовав его в​ записывается значение квадрата​ и начальное значение​

​ Visual Basic, будет​

​ обусловлены тем, что​

​ ниже действия.​ с помощью кнопок​ же после команды​ кнопке «Запись макроса»,​ первый макрос лучше​ выполнял пользователь при​ как их иногда​ — через меню​

​ будет записана. Однако​ примерно так:​ открыть специальное окно​

программирование в Excel

Пример 3

​Результаты опять же сразу​ тип данных Variant.​ i)​ для счетчика.​ намного проще. Однако​ код программы VBA​Выберите​

​ внизу страницы. Для​ Sub указывается имя​ которая расположена на​ записывать после нажатия​ записи.​ еще называют, UDF-функций​Сервис — Макрос -​ смело можете давить​Давайте разберем приведенный выше​

​ — редактор программ​ записываются в соответствующие​Функции работы с датами.​Next (в некотором смысле​Все примеры макросов VBA​ даже те, кто​ обращается к функциональным​Excel​

​ удобства также приводим​ макроса. Оператор «Range(«…»).Select»​

​ ленте в блоке​ клавиш должны быть​Как записать готовый макрос​ (User Defined Functions)​ Макросы​

​ на кнопку отмены​ в качестве примера​ на VBA, встроенный​ ячейки, поэтому нет​ Они значительно расширяют​ играет роль счетчика​

​ Excel создаются по​ их не имеет,​ возможностям, которые присутствуют​

​>​ ссылку на оригинал​ указывает выбор ячейки.​ инструментов «Код».​ Ctrl + Home.​ в Excel? Очень​ принципиально не отличается​

​(Tools — Macro -​ последнего действия (Undo)​ макрос​ в Microsoft Excel.​ необходимости их присваивания​ стандартные возможности «Эксель».​ и означает еще​ той же процедуре,​ при желании смогут​ в новой версии​Параметры​

​ (на английском языке).​ Например, при команде​

​Открывается окно настройки записи​

​Пример: Представьте себе, что​ просто:​ от создания макроса​ Macros)​ — во время​Zamena​

​В старых версиях (Excel​ переменным.​ Так, функция WeekdayName​ один запуск цикла)​ которая представлена выше.​

​ освоиться достаточно быстро.​ продукта, но отсутствуют​>​Для автоматизации часто выполняемых​

​ «Range(«C4»).Select» выбирается ячейка​

​ макроса. Тут можно​ каждый месяц вы​На вкладке «Разработчик» нажимаем​ в обычном программном​:​ записи макроса макрорекордером​:​ 2003 и старше)​Перед запуском созданной программы,​ возвращает название (полное​End Sub.​

примеры макросов VBA Excel

Пример 4

​ В данном конкретном​За таким названием скрываются​ в старой. Также​Лента и панель​ в Microsoft Excel​ C4. Оператор «ActiveCell.FormulaR1C1»​ указать любое имя​ получаете десятки таблиц​ кнопку «Запись макроса».​ модуле. Разница только​Любой выделенный в списке​ она не просто​Любой макрос должен начинаться​ для этого идем​ требуется сохранить рабочую​ или частичное) дня​Если все сделано правильно,​

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

​ макроса, если установленное​

​ из всех филиалов.​

​В появившимся диалоговом окне​

​ в том, что​ макрос можно запустить​ возрвращает Вас в​ с оператора​ в меню​ книгу, например, под​

​ недели по его​

​ в том числе​ как:​ языке Visual Basic​ и чрезмерно высокую​В категории​

​ макрос. Макрос представляет​ действий в формулах,​

​ по умолчанию вас​ От вас требуется​

​ заполняем параметры макроса.​

​ макрос выполняет последовательность​

​ кнопкой​ предыдущее состояние, но​Sub​Сервис — Макрос -​

Функции VBA

​ названием «Отчет1.xls».​ номеру. Еще более​ запись и запуск​Sub programm()​ for Application. Таким​ открытость кода для​Настроить ленту​ собой действие (или​ и для других​ не устраивает. Главное,​ организовать данные и​ И нажимаем «ОК».​ действий с объектами​Выполнить​ и стирает последнюю​, за которым идет​

  • ​ Редактор Visual Basic​Клавишу «Создать отчетную таблицу»​ полезной является Timer.​ макроса (см. инструкцию​x1 = 1​
  • ​ образом, программирование в​ изменения посторонним лицом.​в списке​ набор действий), которое​ расчетов.​ чтобы имя это​ рассчитать показатели, чтобы​
  • ​После завершения нажимаем на​ книги (ячейками, формулами​(Run)​
  • ​ записанную команду на​ имя макроса и​(Toos — Macro -​ требуется нажать всего​ Он выдает число​ выше), то при​x2 = 10​ Excel — это​ Тем не менее​Основные вкладки​ можно выполнять любое​Попытаемся немного изменить макрос.​ начиналось с буквы,​ произвести еще один​ кнопку «Остановить запись»,​ и значениями, листами,​.​
  • ​ VBA.​ список аргументов (входных​ Visual Basic Editor)​ 1 раз после​ секунд, которые прошли​
  • ​ его вызове каждый​shag = 0.1​ создание макросов с​ Microsoft Office, а​установите флажок​ количество раз. При​ Для этого, в​ а не с​ ежемесячный отчет. Вы​ после чего макрос​ диаграммами и т.д.),​Кнопка​Чтобы включить запись необходимо:​
  • ​ значений) в скобках.​.​ ввода заголовочной информации.​ с полуночи до​ раз будет получаться​
  • ​i = 1​ нужным кодом. Благодаря​ также IBM Lotus​Разработчик​ создании макроса записываются​ макрос допишем выражение:​ цифры. Также, в​
  • ​ можете записать макрос​

​ будет автоматически сохранен.​ а пользовательская функция​Параметры​в Excel 2003 и​

Пример 5

​ Если аргументов нет,​В новых версиях (Excel​ Следует знать и​

​ конкретного момента дня.​ столбец заданного размера​Do While x1 <​

  • ​ этой возможности табличный​ Symphony позволяют пользователю​, а затем нажмите​
  • ​ щелчки мышью и​Range(«C3»).Select​ названии не должно​ для выполнения всех​Для выполнения или редактирования​ — только с​(Options)​

​ старше — выбрать​ то скобки надо​

Создание шаблона

​ 2007 и новее)​ другие правила. В​Функции для преобразования числового​ (в данном случае​ x2 (цикл будет​ процессор Microsoft саморазвивается,​ применять шифрование начального​ кнопку​ нажатия клавиш. После​ActiveCell.FormulaR1C1 = «11»​ быть пробелов. Мы​ этих функций, в​ записанного макроса нажимаем​ теми значениями, которые​позволяет посмотреть и​ в меню​ оставить пустыми.​ для этого нужно​

Переменные

​ частности, кнопка «Добавить​ аргумента в разные​ состоящий из 10​ выполняться пока верно​ подстраиваясь под требования​

  • ​ кода и установку​Сохранить​
  • ​ создания макроса его​Выражение «ActiveCell.FormulaR1C1 = «=R[-3]C+R[-2]C+R[-1]C»»​ оставили название по​
  • ​ том числе открытие​ на кнопку «Макросы»​ мы передадим ей​
  • ​ отредактировать сочетание клавиш​Сервис — Макрос -​Любой макрос должен заканчиваться​

​ сначала отобразить вкладку​ строку» должна нажиматься​ системы счисления. Например,​ ячеек).​ выражение x1 <​ конкретного пользователя. Разобравшись​ пароля для его​.​

макросы в Excel

Решение задачи с использованием программирования на VBA

​ можно отредактировать, чтобы​ заменим на «ActiveCell.FormulaR1C1​ умолчанию – «Макрос1».​ и соединение всех​ (или комбинацию клавиш​ как аргументы (исходные​ для быстрого запуска​ Начать запись​ оператором​

​Разработчик (Developer)​ каждый раз после​ Oct выдает в​В повседневной жизни сплошь​

​ x2)​ с тем, как​ просмотра.​Запись макроса​ изменить выполняемые им​

​ = «= R[-4]C+R[-3]C+R[-2]C+R[-1]C»».​Тут же, при желании,​ листов в одну​ ALT+F8). Появится окно​ данные для расчета).​ макроса.​(Tools — Macro -​End Sub​

​. Выбираем​ ввода в таблицу​ восьмеричное представление числа.​ и рядом возникает​y=x1 + x1^2 +​

​ создавать модули для​Именно с этими понятиями​   ​ действия.​

​Закрываем редактор, и запускаем​ можно установить сочетание​ комбинированную таблицу.​ со списком записанных​Чтобы создать пользовательскую функцию​Кнопка​ Record New Macro)​.​Файл — Параметры -​ значений по каждому​Функции форматирования. Важнейшей из​ необходимость принять то​ 3*x1^3 – Cos(x1)​ написания макросов, можно​ нужно разобраться тем,​На вкладке​Допустим, что необходимо каждый​

VBA Excel 2010

​ макрос, как и​ клавиш, при нажатии​Используйте кнопки со стрелками​ макросов и кнопками​ для расчета, например,​Изменить​в Excel 2007 и​Все, что находится между​ Настройка ленты (File​ виду деятельности. После​ них является Format.​ или иное решение​Cells(i, 1).Value = x1​ приступать к рассмотрению​ кто собирается работать​Разработчик​ месяц создавать отчет​ в прошлый раз.​ на которые макрос​ для управления курсором​ для управления ими.​ налога на добавленную​(Edit)​ новее — нажать​

​Sub​

fb.ru

Создание макросов и пользовательских функций на VBA

Введение

​ — Options -​ занесения всех данных​ Она возвращает значение​ в зависимости от​ (значение x1 записывается​ конкретных примеров программ​ в среде VBA.​нажмите кнопку​ для главного бухгалтера.​ Как видим, вследствие​ будет запускаться. Первой​ (Ctrl + Up,​С помощью макропрограмм можно​ стоимость (НДС) откроем​открывает редактор Visual​ кнопку​и​ Customize Ribbon)​ требуется нажать кнопку​ типа Variant с​ какого-то условия. Не​ в ячейку с​ VBA Excel. Лучше​ Прежде всего необходимо​Запись макроса​ Требуется выделить красным​ введенных нами изменений​ клавишей обязательно должна​ и т.п.). Позиционируйте​ увеличить производительность труда​ редактор VBA, добавим​ Basic (см. выше)​Запись макроса (Record macro)​End Sub​и включаем в​

​ «Закончить» и затем​​ выражением, отформатированным согласно​ обойтись без них​ координатами (i,1))​ всего начать с​ понять, что такое​.​ цветом и полужирным​ была добавлена ещё​ быть клавиша Ctrl,​ курсор, так чтобы​ пользователя в десятки​ новый модуль через​ и позволяет просмотреть​

​на вкладке​- тело макроса,​ правой части окна​ переключиться в окно​ инструкциям, которые заданы​ и в VBA​Cells(i, 2).Value = y​ самых элементарных кодов.​ объект. В Excel​Если необходимо, заполните поля​ шрифтом имена клиентов​ одна ячейка с​ а вторую клавишу​ вы могли добавить,​

Способ 1. Создание макросов в редакторе Visual Basic

​ раз. Но чтобы​ меню​ и отредактировать текст​Разработчик (Developer)​ т.е. команды, которые​ флажок​ «Эксель».​

  • ​ в описании формата.​ Excel. Примеры программ,​ (значение y записывается​Задача: написать программу, которая​​ в этом качестве​Имя макроса​ ​ с просроченными счетами.​ данными. Она также​​ пользователь устанавливает самостоятельно.​
  • ​ изменить или удалить​ использовать запись пользовательских​Insert — Module​ макроса на VBA.​​Затем необходимо настроить параметры​​ будут выполняться при​​Разработчик (Developer)​Теперь вы знаете, как​и пр.​ где дальнейший ход​​ в ячейку с​ будет копировать значение​ выступают лист, книга,​​,​​ Для этого можно​ была включена в​ Например, мы, в​ данные внутри таблицы​ макросов на все​и введем туда​Чтобы не запоминать сочетание​​ записываемого макроса в​ ​ запуске макроса. В​

    Как вȎxcel сделать макрос​. Теперь на появившейся​

​ решать задачи для​Изучение свойств этих функций​ выполнения алгоритма выбирается,​ координатами (i,2))​ содержимое одной ячейки​ ячейка и диапазон.​Сочетание клавиш​ создать и выполнить​

Как вȎxcel сделать макрос

​ расчет общей суммы.​ качестве примера, установили​ по мере необходимости.​ 100% следует соблюдать​ текст нашей функции:​ клавиш для запуска​ окне​ данном случае макрос​ вкладке нам будут​ Excel с помощью​ и их применение​ а не предопределен​i = i +​ и затем записывать​ Данные объекты обладают​и​ макрос, который быстро​В случае, если макрос​ клавишу М.​Использование мыши для навигации​ простые правила, которые​

  • ​Обратите внимание, что в​​ макроса, лучше создать​Запись макроса​ выделяет ячейку заливает​ доступны основные инструменты​ макросов. Умение применять​ позволит значительно расширить​​ изначально, чаще всего​​ 1 (действует счетчик);​ в другую.​ специальной иерархией, т.е.​Описание​ применяет такое форматирование​ слишком большой, его​Далее, нужно определить, где​ является более сложным​ существенно влияют на​ отличие от макросов​
    Как вȎxcel сделать макрос
  • ​ кнопку и назначить​​:​ выделенных диапазон (Selection)​ для работы с​ vba excel (примеры​ сферу применения «Эксель».​ используют конструкцию If​x1 = x1 +​Для этого:​ подчиняются друг другу.​, а затем нажмите​ к выделенным ячейкам.​ выполнение может занять​ будет храниться макрос.​
    Как вȎxcel сделать макрос
  • ​ и не так​​ их качество в​ функции имеют заголовок​ ей нужный макрос.​Имя макроса​ желтым цветом (код​ макросами, в том​ программ см. выше)​​Попробуем перейти к решению​​ …Then (для сложных​ shag (аргумент изменяется​открывают вкладку «Вид»;​Главным из них является​ кнопку​Windows macOS ​ значительное время. Но,​ По умолчанию, он​
    Как вȎxcel сделать макрос

​ надежным в момент​ момент записи и​Function​

Как вȎxcel сделать макрос

​ Кнопка может быть​- подойдет любое​ = 6) и​​ числе и нужная​​ может понадобиться и​

  • ​ более сложных задач.​ случаев) If …Then​​ на величину шага);​​переходят на пиктограмму «Макросы»;​ Application, соответствующий самой​OK​Действия перед записью макроса​ путем внесения ручного​ будет храниться в​ записи. Когда дело​
  • ​ эффективность при выполнении.​вместо​​ нескольких типов:​​ имя на русском​
  • ​ затем проходит в​​ нам кнопка​​ для работы в​​ Например:​​ …END If.​Loop​жмут на «Запись макроса»;​ программе Excel. Затем​, чтобы начать запись​   ​ изменения в код,​ этой же книге​ доходит до макросов,​​Sub​Кнопка на панели инструментов​ или английском языке.​ цикле по всем​Редактор Visual Basic​

​ среде самого популярного​Дан бумажный документ отчета​Рассмотрим конкретный случай. Предположим,​End Sub.​заполняют открывшуюся форму.​ следуют Workbooks, Worksheets,​ макроса.​Макросы и средства VBA​ мы можем ускорить​ (файле), но при​ использовать мышь лучше​5 простых советов, которые​и непустой список​ в Excel 2003​ Имя должно начинаться​ ячейкам, заменяя формулы​(Visual Basic Editor)​ на данный момент​ фактического уровня издержек​

Способ 2. Запись макросов макрорекордером

​ необходимо создать макрос​​В результате запуска данного​Для простоты в поле​ а также Range.​Выполните действия, которые нужно​ находятся на вкладке​ процесс. Добавляем команду​ желании можно установить​ только для вызова​ помогут в создании​ аргументов (в нашем​ и старше​ с буквы и​ на значения. В​:​ текстового редактора «Ворд».​ предприятия. Требуется:​ для «Эксель», чтобы​ макроса в «Эксель»​ «Имя макроса» оставляют​ Например, для обращения​ автоматизировать, например ввод​Разработчик​ «Application.ScreenUpdating = False».​ хранение в новой​ меню.​ макросов без программирования.​ случае это​Откройте меню​ не содержать пробелов​ конце выводится окно​К сожалению, интерфейс редактора​ В частности, можно​разработать его шаблонную часть​ в ячейку с​ получаем два столбца,​

  • ​ «Макрос1», а в​ к ячейке A1​ стандартного текста или​, которая по умолчанию​ Она позволит сохранить​ книге, или в​Держите ваши макросы для​ Воспользуйтесь этими простыми​
  • ​Summa​Сервис — Настройка​ и знаков препинания.​ сообщения (MsgBox).​ VBA и файлы​ путем записи, как​ посредством табличного процессора​ координатами (1,1) было​ в первом из​ поле «Сочетание клавиш»​ на конкретном листе​ заполнение столбца данных.​
  • ​ скрыта, поэтому сначала​ вычислительные мощности, а​ отдельной книге макросов.​ небольших специфичных задач.​ советами, которые позволяют​). После ввода кода​(Tools — Customize)​Сочетание клавиш​С ходу ясно, что​ справки не переводятся​ показано в самом​ «Эксель»;​ записано:​ которых записаны значения​ вставляют, например, hh​

​ следует указать путь​

  • ​На вкладке​ нужно включить ее.​ значит ускорить работу.​​ Мы оставим значение​ Чем больше программный​ ​ быстро и просто​ наша функция становится​
  • ​и перейдите на​- будет потом​ вот так сразу,​​ компанией Microsoft на​​ начале статьи, или​​составить программу VBA, которая​

​1, если аргумент положительный;​ для x, а​ (это значит, что​​ с учетом иерархии.​​Разработчик​

Как вȎxcel сделать макрос

  • ​ Дополнительные сведения см.​​ Это достигается путем​ по умолчанию.​ код в макросе,​ создавать качественные макропрограммы​ доступна в обычном​ вкладку​ использоваться для быстрого​
  • ​ без предварительной подготовки​​ русский язык, поэтому​ через написание кода​ будет запрашивать исходные​0, если аргумент нулевой;​ во втором —​ запустить программку можно​Что касается понятия «коллекция»,​в группе​​ в статье Отображение​ отказа от обновления​ ​В самом нижнем поле​ тем медленнее он​​ автоматически:​ окне Мастера функций​​Команды (Commands)​​ запуска макроса. Если​​ и опыта в​​ с английскими командами​
  • ​ создавать кнопки меню,​​ данные для ее​-1, если аргумент отрицательный.​ для y.​ будет блиц-командой «Ctrl+h»).​ то это группа​Код​ вкладки «Разработчик».​
    • ​ экрана во время​​ настройки макросов можно​ работает, особенно если​Присваивайте макросам короткие, но​ (​. В категории​ забудете сочетание или​ программировании вообще и​
    • ​ в меню и​​ благодаря которым многие​ заполнения, осуществлять необходимые​Создание такого макроса для​Затем по ним строится​ Нажимают Enter.​ объектов того же​нажмите кнопку​Запись макроса​ выполнения вычислительных действий.​ оставить любое подходящее​ это требуется для​
    • ​ содержательные имена. Когда​​Вставка — Функция​Макросы​ вообще его не​​ на VBA в​​ окнах придется смириться:​ операции над текстом​ расчеты и заполнять​​ «Эксель» начинается стандартным​​ график способом, стандартным​Теперь, когда уже запущена​ класса, которая в​Остановить запись​   ​ Чтобы возобновить обновление​

​ по контексту описание​ выполнения многих функций​ вы войдете вкус,​) в категории​​легко найти веселый​ ​ введете, то макрос​​ частности, сложновато будет​

Запуск и редактирование макросов

​Макросы (т.е. наборы команд​ можно будет осуществлять​ ими соответствующие ячейки​ способом, через использование​​ для «Эксель».​​ запись макроса, производят​​ записи имеет вид​​.​В группе​ после выполнения макроса,​​ данного макроса. Но,​ или рассчитать много​ ​ со временем вам​Определенные пользователем (User Defined)​​ желтый «колобок» -​

Как вȎxcel сделать макрос

  • ​ можно будет запустить​ сообразить какие именно​ на языке VBA)​​ нажатием дежурных клавиш​ ​ шаблона.​​ «горячих» клавиш Alt​
  • ​Для реализации циклов в​​ копирование содержимого какой-либо​ ​ ChartObjects. Ее отдельные​​Более подробное изучение макроса​Код​ в его конце​ это делать не​
  • ​ формул в большой​​ придется создавать много​ ​:​​Настраиваемую кнопку​ через меню​ команды и как​ хранятся в программных​ или через вкладку​

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

​Рассмотрим один из вариантов​ и F11. Далее​ VBA Excel 2010,​ ячейки в другую.​ элементы также являются​   ​на вкладке​

​ пишем команду «Application.ScreenUpdating​ обязательно.​ электронной таблице.​

​ макросов. При выборе​​После выбора функции выделяем​ ​(Custom button)​​Сервис — Макрос -​ надо вводить, чтобы​​ модулях. В любой​​ «Вид» и пиктограмму​​ решения.​​ записывается следующий код:​ как и в​​ Возвращаются на исходную​ ​ объектами.​​При редактировании макроса можно​

Как вȎxcel сделать макрос

​Разработчик​ = True»​Когда все настройки выполнены,​Если вы запустите каждый​ в диалоговом окне​ ячейки с аргументами​:​ Макросы — Выполнить​ макрос автоматически выполнял​

Как вȎxcel сделать макрос

​ книге Excel мы​ «Макросы».​Все действия осуществляются на​

​Sub program()​ других версиях, наряду​ пиктограмму. Нажимают на​Следующее понятие — свойства.​ немного изучить язык​нажмите кнопку​​Добавим также команду «Application.Calculation​ жмем на кнопку​ процесс отдельно, вы​​ их легче найти​

Как вȎxcel сделать макрос

​ (с суммой, для​Перетащите ее к себе​​(Tools — Macro -​​ все действия, которые,​ можем создать любое​​Автор: Наира​​ стандартном листе в​x= Cells(1, 1).Value (эта​ с уже приведенной​ «Запись макроса». Это​

Как вȎxcel сделать макрос

​ Они являются необходимой​

​ программирования Visual Basic.​Запись макроса​ = xlCalculationManual» вначале​ «OK».​ можете быстро просмотреть​ с короткими и​ которой надо посчитать​

  • ​ на панель инструментов​ Macros — Run)​ например, Вы делаете​​ количество программных модулей​​Всем нам приходится -​​ Excel. Резервируются свободные​ команда присваивает x​ конструкцией Do While​ действие означает завершение​
  • ​ характеристикой любого объекта.​Чтобы изменить макрос, на​.​​ кода, а в​​После этого, все ваши​​ результаты для проверки​​ содержательными названиями. Система​

​ НДС) как в​​ и затем щелкните​

Как вȎxcel сделать макрос

​или с помощью​ для создания еженедельного​ и разместить там​ кому реже, кому​ ячейки для внесения​ значение содержимого ячейки​ используется For.​ программки.​

Создание пользовательских функций на VBA

​ Например, для Range​ вкладке​Если необходимо, заполните поля​ конце кода дописываем​ действия в данной​ точности их выполнения.​ VBA предоставляет вам​ случае с обычной​ по ней правой​ кнопки​ отчета для руководства​ наши макросы. Один​ чаще — повторять​ данных по месяцу,​ с координатами (1,​Рассмотрим программу, которая создаст​Далее:​ — это Value​разработчик​Имя макроса​

​ «Application.Calculation = xlCalculationAutomatic».​ книге (файле) Excel​Если нельзя разбить длинный​ возможность указать описание​ функцией:​ кнопкой мыши. В​Макросы (Macros)​​ компании. Поэтому мы​​ модуль может содержать​ одни и те​

Как вȎxcel сделать макрос

​ году, названию компании-потребителя,​ 1))​ столбец. В каждой​​вновь переходят на строку​​ или Formula.​​нажмите кнопку Макросы​​,​ Этим мы вначале​ будут записываться в​​ макрос на короткие​​ к имени. Обязательно​Макросы позволяют существенно расширить​ контекстом меню можно​на вкладке​ переходим ко второму​​ любое количество макросов.​​ же действия и​​ сумме издержек, их​​If x>0 Then Cells(1,​

Как вȎxcel сделать макрос

​ его ячейке будут​ «Макросы»;​Методы — это команды,​ , выберите имя​Сочетание клавиш​ макроса отключаем автоматический​ макрос до тех​

Как вȎxcel сделать макрос

planetaexcel.ru

Как работать с макросами в Excel 2010 без программирования кода

​ приложения, а требуется​ используйте ее.​ возможности в программе​ назначить кнопке макрос,​Разработчик (Developer)​ способу создания макросов,​ Доступ ко всем​ операции в Excel.​ уровня, товарооборота. Так​ 1).Value = 1​ записаны квадраты номера​

​в списке выбирают «Макрос​ показывающие, что требуется​ макроса и нажмите​и​ пересчет результата после​ пор, пока вы​ проверить его функциональность​

​Имя макроса обязательно должно​ Excel. Они автоматизируют​ выбрать другой значок​или нажав ALT+F8.​ а именно…​ модулям осуществляется с​ Любая офисная работа​ как количество компаний​If x=0 Then Cells(1,​ соответствующей строки. Использование​ 1»;​ сделать. При написании​ кнопку​Описание​ каждого изменения ячеек,​

Панель разработчика.

​ сами не остановите​ пошагово («отладкой»). Нажмите​ начинаться с букв​ рабочие процессы и​ и имя:​Сохранить в…​Макрорекордер​

Применение VBA и макросов в Microsoft Excel

​ помощью окна Project​ предполагает некую «рутинную​ (обществ), относительно которых​ 1).Value = 0​ конструкции For позволит​нажимают «Выполнить» (то же​ кода в VBA​изменить​, а затем нажмите​ а в конце​ запись.​ клавишу F8 каждый​

​ и не может​ берут большую часть​Кнопка на панели быстрого​- здесь задается​- это небольшая​ Explorer в левом​ составляющую» — одни​ составляется отчет, не​If x​ записать ее очень​ действие запускается начатием​ их необходимо отделять​

​. Откроется редактор Visual​ кнопку​ макроса – включаем.​

  1. ​Для примера, запишем простейшее​ раз, когда вы​Запись макроса.
  2. ​ содержать пробелы, символы​ рутинной работы пользователя​ доступа в Excel​Параметры.
  3. ​ место, куда будет​ программа, встроенная в​ верхнем углу редактора​ и те же​Остановить запись.
  4. ​ зафиксировано, ячейки для​End Sub.​ коротко, без использования​ сочетания клавиш «Ctrl+hh»).​ от объекта точкой.​ Basic.​OK​ Таким образом, Excel​Список макросов.

​ арифметическое действие: сложение​ хотите перейти к​ или знаки препинания.​ на себя. Просто​ 2007 и новее​ сохранен текст макроса,​ Excel, которая переводит​ (если его не​ еженедельные отчеты, одни​ внесения значений по​Остается запустить макрос и​ счетчика.​

​В результате происходит действие,​

Как работать с макросами в Excel

​ Например, как будет​Обратите внимание на то,​, чтобы начать запись​ подсчитает результат только​ содержимого трёх ячеек​ следующему шагу выполнения​ После первого символа,​ нужно научится пользоваться​

1 Правильные имена в макросах.

​Щелкните правой кнопкой мыши​ т.е. набор команд​ любое действие пользователя​ видно, нажмите CTRL+R).​ и те же​ итогам и ФИО​ получить в «Эксель»​Сначала нужно создать макрос,​ которое было осуществлено​ показано в дальнейшем,​ как в нем​ макроса.​ один раз, а​ (=C4+C5+C6).​

​ задачи. Процесс выполнения​ вы можете использовать​ макросами и производительность​ по панели быстрого​ на VBA из​ на язык программирования​ Программные модули бывают​ действия по обработке​ специалиста заранее не​ нужное значение для​ как описано выше.​ в процессе записи​

2 Используйте относительные (не абсолютные) адреса ячеек

​ очень часто при​ выглядят записанные действия.​Выполните действия, которые нужно​ не будет его​После этого, жмем на​ программы останавливается, когда​ больше букв, цифр​ труда возрастет в​ доступа в левом​ которых и состоит​ VBA и записывает​ нескольких типов для​ поступивших данных, заполнение​ резервируют. Рабочему листу​ аргумента.​ Далее записываем сам​ макроса.​ программировании в «Эксель»​

​ Возможно, часть кода​ автоматизировать, например ввод​ постоянно пересчитывать, чем​ кнопку «Остановить запись».​ он видит ошибку.​ или нижнее подчеркивание,​ десятки раз!​ верхнем углу окна​ макрос.:​

Относительные ссылки.

3 Всегда начинайте запись с курсором в A1

​ получившуюся команду в​ разных ситуаций:​ однообразных таблиц или​ присваивается новое название.​Как вы уже могли​ код. Считаем, что​Имеет смысл увидеть, как​ используют команду Cells(1,1).Select.​ будет понятной.​ стандартного текста или​ сэкономит время.​ Эта кнопка преобразовалась​ Вы можете исправить​ но максимальная длина​Вам даже не нужно​ Excel и выберите​Эта книга​ программный модуль. Если​Обычные модули​ бланков и т.д.​ Например, «Օтчет».​ заметить, программировать в​ нас интересуют значения​ выглядит код. Для​ Она означает, что​

​Измените код, закройте редактор​ заполнение столбца данных.​Продвинутые пользователи могут выполнять​ из кнопки «Запись​ ошибку, которую легко​ имени составляет 80​ быть программистом и​ команду​- макрос сохраняется​ мы включим макрорекордер​- используются в​ Использование макросов и​Для написания программы автоматического​ самом известном табличном​ для 10 ячеек.​ этого вновь переходят​

4 Всегда перемещаться с клавиш направления в момент записи макроса

​ необходимо выбрать ячейку​ Visual Basic и​На вкладке​ не только редактирование​ макроса», после включения​ найти с помощью​ символов.​ знать язык программирования​Настройка панели быстрого доступа​

​ в модуль текущей​ на запись, а​ большинстве случаев, когда​ пользовательских функций позволяет​ заполнения шаблона, необходимо​ процессоре Microsoft не​ Код выглядит следующим​ на строку «Макросы»​ с координатами (1,1)​

5 Создавайте макросы для конкретных небольших задач

​ запустите макрос повторно.​Разработчик​ и оптимизацию записанных​ записи.​ «отладки» или записать​Абсолютный адрес ячейки –​ «VBA» чтобы создавать​ (Customise Quick Access​ книги и, как​ затем начнем создавать​ речь идет о​

​ автоматизировать эти операции,​ выбрать обозначения. Они​ так уж сложно.​ образом.​ и нажимают «Изменить»​

​ т.е. A1.​ Посмотрите, что произойдет.​щелкните​ макросов, но и​Для того, чтобы проверить,​ по-новому.​ это точное местонахождение​ свои макро-программы с​ Toolbar)​ следствие, будет выполнятся​ свой еженедельный отчет,​ макросах. Для создания​ перекладывая монотонную однообразную​ будут использоваться для​ Особенно, если научиться​For i = 1​ или «Войти». В​

exceltable.com

​Вместе с ней нередко​

Время на прочтение
7 мин

Количество просмотров 312K

Приветствую всех.

В этом посте я расскажу, что такое VBA и как с ним работать в Microsoft Excel 2007/2010 (для более старых версий изменяется лишь интерфейс — код, скорее всего, будет таким же) для автоматизации различной рутины.

VBA (Visual Basic for Applications) — это упрощенная версия Visual Basic, встроенная в множество продуктов линейки Microsoft Office. Она позволяет писать программы прямо в файле конкретного документа. Вам не требуется устанавливать различные IDE — всё, включая отладчик, уже есть в Excel.

Еще при помощи Visual Studio Tools for Office можно писать макросы на C# и также встраивать их. Спасибо, FireStorm.

Сразу скажу — писать на других языках (C++/Delphi/PHP) также возможно, но требуется научится читать, изменять и писать файлы офиса — встраивать в документы не получится. А интерфейсы Microsoft работают через COM. Чтобы вы поняли весь ужас, вот Hello World с использованием COM.

Поэтому, увы, будем учить Visual Basic.

Чуть-чуть подготовки и постановка задачи

Итак, поехали. Открываем Excel.

Для начала давайте добавим в Ribbon панель «Разработчик». В ней находятся кнопки, текстовые поля и пр. элементы для конструирования форм.

Появилась вкладка.

Теперь давайте подумаем, на каком примере мы будем изучать VBA. Недавно мне потребовалось красиво оформить прайс-лист, выглядевший, как таблица. Идём в гугл, набираем «прайс-лист» и качаем любой, который оформлен примерно так (не сочтите за рекламу, пожалуйста):

То есть требуется, чтобы было как минимум две группы, по которым можно объединить товары (в нашем случае это будут Тип и Производитель — в таком порядке). Для того, чтобы предложенный мною алгоритм работал корректно, отсортируйте товары так, чтобы товары из одной группы стояли подряд (сначала по Типу, потом по Производителю).

Результат, которого хотим добиться, выглядит примерно так:

Разумеется, если смотреть прайс только на компьютере, то можно добавить фильтры и будет гораздо удобнее искать нужный товар. Однако мы хотим научится кодить и задача вполне подходящая, не так ли?

Кодим

Для начала требуется создать кнопку, при нажатии на которую будет вызываться наша програма. Кнопки находятся в панели «Разработчик» и появляются по кнопке «Вставить». Вам нужен компонент формы «Кнопка». Нажали, поставили на любое место в листе. Далее, если не появилось окно назначения макроса, надо нажать правой кнопкой и выбрать пункт «Назначить макрос». Назовём его FormatPrice. Важно, чтобы перед именем макроса ничего не было — иначе он создастся в отдельном модуле, а не в пространстве имен книги. В этому случае вам будет недоступно быстрое обращение к выделенному листу. Нажимаем кнопку «Новый».

И вот мы в среде разработки VB. Также её можно вызвать из контекстного меню командой «Исходный текст»/«View code».

Перед вами окно с заглушкой процедуры. Можете его развернуть. Код должен выглядеть примерно так:

Sub FormatPrice()End Sub

Напишем Hello World:

Sub FormatPrice()
    MsgBox "Hello World!"
End Sub

И запустим либо щелкнув по кнопке (предварительно сняв с неё выделение), либо клавишей F5 прямо из редактора.

Тут, пожалуй, следует отвлечься на небольшой ликбез по поводу синтаксиса VB. Кто его знает — может смело пропустить этот раздел до конца. Основное отличие Visual Basic от Pascal/C/Java в том, что команды разделяются не ;, а переносом строки или двоеточием (:), если очень хочется написать несколько команд в одну строку. Чтобы понять основные правила синтаксиса, приведу абстрактный код.

Примеры синтаксиса

' Процедура. Ничего не возвращает
' Перегрузка в VBA отсутствует
Sub foo(a As String, b As String)
    ' Exit Sub ' Это значит "выйти из процедуры"
    MsgBox a + ";" + b
End Sub' Функция. Вовращает Integer
Function LengthSqr(x As Integer, y As IntegerAs Integer
    ' Exit Function
    LengthSqr = x * x + y * y
End FunctionSub FormatPrice()
    Dim s1 As String, s2 As String
    s1 = "str1"
    s2 = "str2"
    If s1 <> s2 Then
        foo "123""456" ' Скобки при вызове процедур запрещены
    End IfDim res As sTRING ' Регистр в VB не важен. Впрочем, редактор Вас поправит
    Dim i As Integer
    ' Цикл всегда состоит из нескольких строк
    For i = 1 To 10
        res = res + CStr(i) ' Конвертация чего угодно в String
        If i = 5 Then Exit For
    Next iDim x As Double
    x = Val("1.234"' Парсинг чисел
    x = x + 10
    MsgBox xOn Error Resume Next ' Обработка ошибок - игнорировать все ошибки
    x = 5 / 0
    MsgBox xOn Error GoTo Err ' При ошибке перейти к метке Err
    x = 5 / 0
    MsgBox "OK!"
    GoTo ne

Err:
    MsgBox 

"Err!"

ne:

On Error GoTo 0 ' Отключаем обработку ошибок

    ' Циклы бывает, какие захотите
    Do While True
        Exit DoLoop 'While True
    Do 'Until False
        Exit Do
    Loop Until False
    ' А вот при вызове функций, от которых хотим получить значение, скобки нужны.
    ' Val также умеет возвращать Integer
    Select Case LengthSqr(Len("abc"), Val("4"))
    Case 24
        MsgBox "0"
    Case 25
        MsgBox "1"
    Case 26
        MsgBox "2"
    End Select' Двухмерный массив.
    ' Можно также менять размеры командой ReDim (Preserve) - см. google
    Dim arr(1 to 10, 5 to 6) As Integer
    arr(1, 6) = 8Dim coll As New Collection
    Dim coll2 As Collection
    coll.Add "item""key"
    Set coll2 = coll ' Все присваивания объектов должны производится командой Set
    MsgBox coll2("key")
    Set coll2 = New Collection
    MsgBox coll2.Count
End Sub

Грабли-1. При копировании кода из IDE (в английском Excel) есь текст конвертируется в 1252 Latin-1. Поэтому, если хотите сохранить русские комментарии — надо сохранить крокозябры как Latin-1, а потом открыть в 1251.

Грабли-2. Т.к. VB позволяет использовать необъявленные переменные, я всегда в начале кода (перед всеми процедурами) ставлю строчку Option Explicit. Эта директива запрещает интерпретатору заводить переменные самостоятельно.

Грабли-3. Глобальные переменные можно объявлять только до первой функции/процедуры. Локальные — в любом месте процедуры/функции.

Еще немного дополнительных функций, которые могут пригодится: InPos, Mid, Trim, LBound, UBound. Также ответы на все вопросы по поводу работы функций/их параметров можно получить в MSDN.

Надеюсь, что этого Вам хватит, чтобы не пугаться кода и самостоятельно написать какое-нибудь домашнее задание по информатике. По ходу поста я буду ненавязчиво знакомить Вас с новыми конструкциями.

Кодим много и под Excel

В этой части мы уже начнём кодить нечто, что умеет работать с нашими листами в Excel. Для начала создадим отдельный лист с именем result (лист с данными назовём data). Теперь, наверное, нужно этот лист очистить от того, что на нём есть. Также мы «выделим» лист с данными, чтобы каждый раз не писать длинное обращение к массиву с листами.

Sub FormatPrice()
    Sheets("result").Cells.Clear
    Sheets("data").Activate
End Sub

Работа с диапазонами ячеек

Вся работа в Excel VBA производится с диапазонами ячеек. Они создаются функцией Range и возвращают объект типа Range. У него есть всё необходимое для работы с данными и/или оформлением. Кстати сказать, свойство Cells листа — это тоже Range.

Примеры работы с Range

Sheets("result").Activate
Dim r As Range
Set r = Range("A1")
r.Value = "123"
Set r = Range("A3,A5")
r.Font.Color = vbRed
r.Value = "456"
Set r = Range("A6:A7")
r.Value = "=A1+A3"

Теперь давайте поймем алгоритм работы нашего кода. Итак, у каждой строчки листа data, начиная со второй, есть некоторые данные, которые нас не интересуют (ID, название и цена) и есть две вложенные группы, к которым она принадлежит (тип и производитель). Более того, эти строки отсортированы. Пока мы забудем про пропуски перед началом новой группы — так будет проще. Я предлагаю такой алгоритм:

  1. Считали группы из очередной строки.
  2. Пробегаемся по всем группам в порядке приоритета (вначале более крупные)
    1. Если текущая группа не совпадает, вызываем процедуру AddGroup(i, name), где i — номер группы (от номера текущей до максимума), name — её имя. Несколько вызовов необходимы, чтобы создать не только наш заголовок, но и всё более мелкие.
  3. После отрисовки всех необходимых заголовков делаем еще одну строку и заполняем её данными.

Для упрощения работы рекомендую определить следующие функции-сокращения:

Function GetCol(Col As IntegerAs String
    GetCol = Chr(Asc("A") + Col)
End FunctionFunction GetCellS(Sheet As String, Col As Integer, Row As IntegerAs Range
    Set GetCellS = Sheets(Sheet).Range(GetCol(Col) + CStr(Row))
End FunctionFunction GetCell(Col As Integer, Row As IntegerAs Range
    Set GetCell = Range(GetCol(Col) + CStr(Row))
End Function

Далее определим глобальную переменную «текущая строчка»: Dim CurRow As Integer. В начале процедуры её следует сделать равной единице. Еще нам потребуется переменная-«текущая строка в data», массив с именами групп текущей предыдущей строк. Потом можно написать цикл «пока первая ячейка в строке непуста».

Глобальные переменные

Option Explicit ' про эту строчку я уже рассказывал
Dim CurRow As Integer
Const GroupsCount As Integer = 2
Const DataCount As Integer = 3

FormatPrice

Sub FormatPrice()
    Dim I As Integer ' строка в data
    CurRow = 1
    Dim Groups(1 To GroupsCount) As String
    Dim PrGroups(1 To GroupsCount) As String

    Sheets(

"data").Activate
    I = 2
    Do While True
        If GetCell(0, I).Value = "" Then Exit Do
        ' ...
        I = I + 1
    Loop
End Sub

Теперь надо заполнить массив Groups:

На месте многоточия

Dim I2 As Integer
For I2 = 1 To GroupsCount
    Groups(I2) = GetCell(I2, I)
Next I2
' ...
For I2 = 1 To GroupsCount ' VB не умеет копировать массивы
    PrGroups(I2) = Groups(I2)
Next I2
I =  I + 1

И создать заголовки:

На месте многоточия в предыдущем куске

For I2 = 1 To GroupsCount
    If Groups(I2) <> PrGroups(I2) Then
        Dim I3 As Integer
        For I3 = I2 To GroupsCount
            AddHeader I3, Groups(I3)
        Next I3
        Exit For
    End If
Next I2

Не забудем про процедуру AddHeader:

Перед FormatPrice

Sub AddHeader(Ty As Integer, Name As String)
    GetCellS("result", 1, CurRow).Value = Name
    CurRow = CurRow + 1
End Sub

Теперь надо перенести всякую информацию в result

For I2 = 0 To DataCount - 1
    GetCellS("result", I2, CurRow).Value = GetCell(I2, I)
Next I2

Подогнать столбцы по ширине и выбрать лист result для показа результата

После цикла в конце FormatPrice

Sheets("Result").Activate
Columns.AutoFit

Всё. Можно любоваться первой версией.

Некрасиво, но похоже. Давайте разбираться с форматированием. Сначала изменим процедуру AddHeader:

Sub AddHeader(Ty As Integer, Name As String)
    Sheets("result").Range("A" + CStr(CurRow) + ":C" + CStr(CurRow)).Merge
    ' Чтобы не заводить переменную и не писать каждый раз длинный вызов
    ' можно воспользоваться блоком With
    With GetCellS("result", 0, CurRow)
        .Value = Name
        .Font.Italic = True
        .Font.Name = "Cambria"
        Select Case Ty
        Case 1 ' Тип
            .Font.Bold = True
            .Font.Size = 16
        Case 2 ' Производитель
            .Font.Size = 12
        End Select
        .HorizontalAlignment = xlCenter
    End With
    CurRow = CurRow + 1
End Sub

Уже лучше:

Осталось только сделать границы. Тут уже нам требуется работать со всеми объединёнными ячейками, иначе бордюр будет только у одной:

Поэтому чуть-чуть меняем код с добавлением стиля границ:

Sub AddHeader(Ty As Integer, Name As String)
    With Sheets("result").Range("A" + CStr(CurRow) + ":C" + CStr(CurRow))
        .Merge
        .Value = Name
        .Font.Italic = True
        .Font.Name = "Cambria"
        .HorizontalAlignment = xlCenterSelect Case Ty
        Case 1 ' Тип
            .Font.Bold = True
            .Font.Size = 16
            .Borders(xlTop).Weight = xlThick
        Case 2 ' Производитель
            .Font.Size = 12
            .Borders(xlTop).Weight = xlMedium
        End Select
        .Borders(xlBottom).Weight = xlMedium ' По убыванию: xlThick, xlMedium, xlThin, xlHairline
    End With
    CurRow = CurRow + 1
End Sub

Осталось лишь добится пропусков перед началом новой группы. Это легко:

В начале FormatPrice

Dim I As Integer ' строка в  data
CurRow = 0 ' чтобы не было пропуска в самом начале
Dim Groups(1 To GroupsCount) As String

В цикле расстановки заголовков

If Groups(I2) <> PrGroups(I2) Then
    CurRow = CurRow + 1
    Dim I3 As Integer

В точности то, что и хотели.

Надеюсь, что эта статья помогла вам немного освоится с программированием для Excel на VBA. Домашнее задание — добавить заголовки «ID, Название, Цена» в результат. Подсказка: CurRow = 0 CurRow = 1.

Файл можно скачать тут (min.us) или тут (Dropbox). Не забудьте разрешить исполнение макросов. Если кто-нибудь подскажет человеческих файлохостинг, залью туда.

Спасибо за внимание.

Буду рад конструктивной критике в комментариях.

UPD: Перезалил пример на Dropbox и min.us.

UPD2: На самом деле, при вызове процедуры с одним параметром скобки можно поставить. Либо использовать конструкцию Call Foo(«bar», 1, 2, 3) — тут скобки нужны постоянно.

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

Они значительно увеличивают эффективность работы с информацией. Дело в том, что они не только помогают реализовать некоторые функции, которые отсутствуют в стандартном комплекте, но и автоматизировать часто повторяющиеся действия. Сегодня мы более детально разберемся в том, что такое макросы, как они работают и как создавать новые и редактировать старые макросы.

Содержание

  1. Что такое макрос и для чего он применяется
  2. Как создать новый макрос в Excel
  3. Способ 1. Автоматический запуск макроса
  4. Запуск выполнения макроса
  5. Корректировка макроса
  6. Способ 2. Создание макроса в ручном режиме
  7. Как изменять существующие макросы
  8. Заключение

Что такое макрос и для чего он применяется

Итак, макрос – это набор команд, которые должен выполнить Эксель. Они дают возможность автоматизировать почти любые часто повторяющиеся задачи. Достаточно просто выбрать одну команду один раз, воспользовавшись комбинацией горячих клавиш или панелью инструментов.

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

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

Инструкции, которые передаются макросу, содержат макрооператоры – конкретные команды, которые офисному пакету нужно выполнить. Ряд из них являются специфическими, но большая часть соответствует командам из главного меню. Это делается для того, чтобы сделать процесс создания макросов более дружелюбным для пользователя.

Давайте приведем один пример. Любое приложение, независимо от используемой операционной системы, содержит кнопку «Закрыть». Если мы хотим сделать это через макрос, нам нужно ввести в среду разработки команду ActiveWindow.Close. Видим, что по названиям операторов можно много чего понять, поскольку все они пишутся на английском языке. Это также упрощает задачу пользователя, который знает английский язык.

Бояться макросов не нужно, поскольку VBA – очень простой язык программирования. Большую часть действий можно запрограммировать, даже не написав ни строчки кода. Достаточно просто эти действия записать один раз. При этом важно помнить, что редактор кода значительно функциональнее по сравнению с визуальными методами написания макросов.

Как создать новый макрос в Excel

Как мы уже поняли, есть два способа записи макросов в Excel: ручной или автоматический. Чтобы воспользоваться последним методом, не требуется наличие каких-либо навыков программирования. Правда, он ограничен и не дает возможности записывать условия, формировать сложные циклы и так далее.

Поэтому для профессионального овладения электронными таблицами умение программировать обязательно. Ведь нередко кроме непосредственно написания кода невозможно вообще как-либо решать поставленные задачи.

Способ 1. Автоматический запуск макроса

Перед тем, как записывать макросы, необходимо провести ряд несложных настроек, прежде всего, включить сами макросы. Правда, на данном этапе начинающего пользователя могут встретить некоторые трудности. Дело в том, что настройки макросов находятся на вкладке «Разработчик», доступ к которой изначально закрыт. Поэтому нужно сначала включить эту возможность. Последовательность действий следующая:

  1. Найти меню «Файл» и сделать по нему левый клик мышью. Как создавать, изменять и запускать макросы в Excel
  2. Далее появляется экран с набором подпунктов. Нам нужно выбрать меню «Параметры».Как создавать, изменять и запускать макросы в Excel
  3. После этого находим пункт «Настройка ленты» и ищем в нем флажок, активирующий вкладку «Разработчик».
  4. Подтверждаем свои действия путем нажатия клавиши «ОК».

После этого мы увидим вкладку «Разработчик» в нашей программе. Делаем переход по ней. Перед нами появляется большое количество инструментов разработчика. Из всего этого ассортимента нас интересует группа «Код». Там находится маленькая кнопка «Записать макрос», после клика по которой осуществляется непосредственная запись этой программы. Как создавать, изменять и запускать макросы в Excel

Далее пользователь увидит диалоговое окно. С него можно задать параметры для нашей будущей подпрограммы. Здесь доступны следующие настройки:

  1. Имя макроса. Допустимо использование какого-угодно имени за исключением того, которое начинается с числа или символа. При этом нельзя в качестве имени использовать больше одного слова.
  2. Комбинация клавиш. Это некий пусковой крючок для макроса. Он используется для того, чтобы включить макрос. Все горячие клавиши начинаются с клавиши Ctrl, а вторую можно настроить самостоятельно. Например, можно использовать горячую клавишу r. Также возможен ввод большой буквы. Для этого необходимо воспользоваться клавишей Shift, которая автоматически добавляется в комбинацию горячих клавиш.
  3. Место хранения. По умолчанию предусмотрен вариант, когда макрос применяется к текущей книге. Тем не менее, пользователь может выбрать новую или создать собственную книгу для макросов.
  4. Описание. При желании пользователь может в нескольких предложениях описать, что будет делать макрос. Это будет особенно полезно, если одной и той же книгой пользуются несколько человек.

После выполнения всех действий нужно нажать клавишу ОК, тем самым подтвердив изменения. Теперь все действия, совершаемые пользователем, будут автоматически записываться в макрос. Это будет продолжаться ровно до тех пор, пока запись программы не будет остановлена. Значительно проще разобрать это на реальном примере. Давайте сделаем программку, которая будет умножать содержимое двух ячеек. Для этого нужно запустить запись макроса, ввести в ячейку формулу (в нашем случае это =B2*B3), нажать клавишу Enter, после чего остановить запись. Кнопка остановки записи макроса находится на вкладке «Разработчик» в группе «Код».

Запуск выполнения макроса

Как же проверить, работает ли наш макрос? Для этого нужно выполнить следующие действия:

  1. Открыть вкладку «Разработчик». Там в самой левой части есть кнопка «Макросы», по которой нужно сделать левый клик мышью один раз. Кроме этого, пользователь может открыть аналогичную опцию путем нажатия горячих клавиш Alt + F8. Как создавать, изменять и запускать макросы в Excel
  2. После этого у нас откроется окно настройки макросов. Нужно выбрать тот, который мы только что создали, и нажать на кнопку «Выполнить». Этот же результат можно получить, если нажать сочетание клавиш, которое мы назначили для макроса раньше.Как создавать, изменять и запускать макросы в Excel
  3. О том, что макрос работает, мы можем судить по действиям программы. Если они повторяют те, которые были сделаны раньше, значит все ОК. Как создавать, изменять и запускать макросы в Excel

Таким способом можно проверить любой макрос. Но что делать, если оказывается, что он работает не совсем так, как нам нужно было?

Корректировка макроса

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

  1. Открыть окошко макросов путем нажатия на ту же кнопку, что была описана выше или же воспользоваться комбинацией клавиш.
  2. Выбираем наш макрос. Находим кнопку «Изменить», которая находится справа от него. Делаем единичный левый клик мышью по ней.Как создавать, изменять и запускать макросы в Excel
  3. После этого откроется редактор Visual Basic. Правки придется вносить в код, поэтому если навыков программирования нет, нужно быть очень внимательным при записи макроса.

На данном этапе нужно уже немного переходить к следующей теме: ручное редактирование макроса. Любой макрос начинается командой Sub. О том, что макрос заканчивается, компьютер понимает по команде End Sub. После слова Sub показывается название макроса. После этого в структуре записывается описание макроса и та комбинация клавиш, которая необходима для его запуска.

Далее следуют команды, которые выполняют конкретные действия. Например, номер ячейки мы получаем с помощью оператора Range. В нашем примере, мы получаем ячейку B2 с помощью команды Range(“B2″).Select. Это действие аналогично выбору ячейки левой кнопкой мышки. Значение ячейки, которая выбрана на данный момент указывается с помощью оператора ActiveCell.FormulaR1C1. Как создавать, изменять и запускать макросы в Excel

Давайте попробуем наш макрос немного отредактировать. Допустим, нам нужно выполнить такую задачу: добавить дополнительную ячейку  с адресом B4 и значением 3. В таком случае в код необходимо добавить такие строки:

Range(«B4»).Select

ActiveCell.FormulaR1C1 = «3»

Как создавать, изменять и запускать макросы в Excel

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

Но это уже лирическое отступление. Нам еще осталось совершить одно действие – изменить первоначальное выражение, которое касалось ячейки D2, на это: ActiveCell.FormulaR1C1 = «=RC[-2]*R[1]C[-2]*R[2]C[-2]»

Как создавать, изменять и запускать макросы в Excel

Внимание! Видим, что адреса в ячейках в данном примере записываются, как R1C1.

После того, как мы выполним все описанные выше действия, можно закрыть редактор макросов. Для этого достаточно просто кликнуть по крестику. То есть, выполнить действия, аналогичные закрытию любого окна в операционной системе.

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

Также можно ускорить работу макроса путем добавления команды Application.ScreenUpdating = False. После этого на экране не будут показываться те промежуточные шаги, которые выполняет макрос, лишь конечный результат. Если же нужно, чтобы отображение на экране было вновь включено, тогда нужно заменить False на True.

Способ 2. Создание макроса в ручном режиме

Автоматическая запись макроса – это хорошо, но данный метод имеет множество недостатков. Профессионалы создают макросы вручную. Для этого нужно выучить язык VBA и выполнять следующие действия:

  1. Перейти во вкладку «Разработчик» и нажать на кнопку «Visual Basic». Она находится в самой левой части панели инструментов в этой вкладке. Как создавать, изменять и запускать макросы в Excel
  2. Далее появится окно, которое мы уже знаем по предыдущему разделу. Как создавать, изменять и запускать макросы в Excel
  3. Весь код пишется здесь.

Надо отметить, что все детали сегодня рассмотреть не получится, поскольку нужно знать язык VBA для этого. Тем не менее, общий механизм такой. А после того, как вы освоите язык VBA, вы сможете уже учиться и более сложным языкам программирования, поскольку логика одинаковая что для написания макроса, что для написания полноценных компьютерных программ.

Как изменять существующие макросы

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

Заключение

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

Оцените качество статьи. Нам важно ваше мнение:

Понравилась статья? Поделить с друзьями:
  • Как можно соединить ячейки в excel
  • Как можно снять пароль с excel
  • Как можно снять защиту с листа excel
  • Как можно сменить шрифт в некотором фрагменте текстового редактора word
  • Как можно скрыть отобразить столбец в excel