Как делать макросы в экселе. Макрос на VBA Excel – Формируем документы по шаблону
Макрос в «Эксель» — небольшая программка (скрипт) написанная на языке VBA (Visual Basic for Applications) разновидности языка Basic (Бейсик).
В макросах, как правило, прописывают последовательность действий с данными в таблице Excel.
Это очень удобно, если Вам приходится по многу раз выполнять одну и ту же последовательность операций с данными. Достаточно один раз записать макро и запускать его каждый раз, когда хотите выполнить нужные действия. При запуске макроса программа сама выполнит все нужные расчеты и обработает информацию в таблице.
Как создать простой макрос.
Создавать макросы в Excel можно двумя способами:
- При помощи опции «Запись макроса»;
- Написать макрос на языке VBA в редакторе макросов и применить его к документу.
Самый простой способ «Запись макроса», его и рассмотрим.
Для начала необходимо включить вкладку «Разработчик», если она не включена.
Необходимо кликнуть правой кнопкой мыши на панели инструментов, выбрать «настройка ленты», в настройках ленты поставить галочку напротив панели «Разработчик» и нажать «ОК».
После того, как включили панель разработчика можно начинать запись макроса.
Чтобы записать макрос, следует:
— при сохранении в «Эта книга» макрос будет работать только в текущем документе;
— при сохранении в «Личная книга» макрос будет работать во всех документах на Вашем компьютере.
- Можно добавить описание макроса, оно поможет Вам вспомнить, какие действия совершает макрос.
- Нажать «Ок».
- Если вы не указали сочетание клавиш, запись начнется сразу после нажатия кнопки «Ок».
- Когда идет запись, Вы должны совершать требуемую последовательность действий.
- Когда закончите, нажимайте кнопку остановить запись.
Записанные макросы отображаются в книге макросов.
Чтобы их посмотреть следует нажать кнопку «макросы». В появившемся окне появится список макросов. Выберете нужный макрос и нажмите «Выполнить».
Макросы, находящиеся в книге можно редактировать. Для этого нужно выбрать макрос и нажать кнопку «Изменить». При нажатии на кнопку «Изменить» откроется редактор макросов с записанным на языке VBA скриптом.
Попробуем отредактировать макрос.
Например, продолжить его еще на несколько ячеек.
После корректировок закрываем редактор и пробуем снова запустить макрос.
Макрос – это специальная программа, написанная на встроенном в Excel языке программирования Visual Basic for Application (VBA). Если вам часто приходится выполнять одни и те же операции в Эксель, то гораздо проще записать макрос или найти готовый код макроса, для выполнения определенных действий в Интернете.
Во втором случае, Вы найдете макрос в виде VBA-кода. В этом обычно и состоит вопрос: как добавить макрос в рабочий лист Excel, и как им пользоваться.
Как включить макросы в Excel
Чтобы Вы могли использовать макросы в работе, для начала их нужно включить. Кликаем по кнопочке «Файл» , в левом верхнем углу, и выбираем из списка «Параметры» .
В окне «Параметры Excel» перейдите на вкладку «Настройка ленты» , теперь в правой части окна поставьте галочку напротив пункта «Разработчик» и нажмите «ОК» .
Вверху на ленте появится новая вкладка «Разработчик» . На ней и будут находиться все необходимые команды для работы с макросами.
Теперь разрешим использование всех макросов. Снова открываем «Файл» – «Параметры» . Переходим на вкладку «Центр управления безопасностью» , и в правой части окна кликаем по кнопочке «Параметры центра управления безопасностью» .
Кликаем по вкладке «Параметры макросов» , выделяем маркером пункт «Включить все макросы» и жмем «ОК» . Теперь перезапустите Excel: закройте программу и запустите ее снова.
Как вставить макрос в Excel
Важно понимать, что макрос можно вставить в модуль, рабочий лист, рабочую книгу, или они могут являться частью пользовательской формы.
Вставим код макроса в модуль
Например, нужно объединить несколько ячеек в одну без потери данных. Как известно, Excel может объединять ячейки, сохраняя данные только из левой верхней ячейки. Чтобы сохранить все данные из объединяемых ячеек, будем использовать VBA-код.
Открываем редактор VBА: переходим на вкладку «Разработчик» и кликаем по кнопочке «Visual Basic» , также можно воспользоваться комбинацией «Alt+F11» .
С левой стороны редактора, в окне «Project» , выделяем мышкой рабочую книгу. Рабочая книга – это Ваш открытый документ Excel, в который нужно вставить макрос. У меня он называется «Книга1» .
Кликаем по выбранному пункту правой кнопкой мыши и выбираем из меню «Insert» – «Module» .
В окне «Project» появилась новая папка «Modules» , а в ней наш первый модуль с названием «Module1» .
Справа появится поле для ввода VBA-кода. С помощью комбинации «Ctrl+V» , вставляю в него код, который будет объединять несколько ячеек, без потери данных. Название макроса «MergeCell» .
Следите за тем, куда Вы вставляете код, это будет написано или в заголовке редактора, или в заголовке окна для вставки кода. Мы вставляем код в модуль, соответственно надпись – «Modul1(Code)» .
Сохраняем изменения, нажав комбинацию «Ctrl+S» . Если Вы используете Excel 2007 и выше, появится окно сохранения документа. В нем, в поле «Тип файла» , выберите из выпадающего списка «Книга Excel с поддержкой макросов» и нажмите «Сохранить» .
Вставим код макроса в рабочий лист
Например, у нас есть выпадающий список . Нужно сделать так, чтобы при выборе нескольких значений из него, они появлялись в ячейках справа.
Открываем редактор VBA и в окошке «Project» выделяем нужный лист, если их в рабочей книге несколько, на котором должен работать макрос: «Лист1 (Лист1)» . Кликаем по нему два раза мышкой.
Справа появиться окошко для ввода кода. Обратите внимание, мы вставляем код в рабочий лист, соответственно в заголовке написано «Лист1(Code)» . Сохраните изменения в документе, как было описано выше.
Чтобы вставить код макроса в рабочую книгу , кликните два раза мышкой по пункту «ЭтаКнига» и вставьте код в появившуюся область.
Создадим пользовательскую функцию
Например, создадим функцию, которая будет рассчитывать НДС. В окне «Project» кликаем по рабочему листу правой кнопкой мыши и выбираем «Insert» – «Module» .
В папке «Modules» , появляется второй модуль с названием «Module2» . Прописываем VBA-код в соответствующее окно, и сохраняем его, нажав «Ctrl+S» . Называться функция будет «NDS» .
Как запустить макросы в Excel
Теперь рассмотрим, как выполняются все созданные ранее макросы в документе Excel.
Если макрос был вставлен в модуль , то он запускается пользователем. У меня такой макрос объединяет несколько ячеек в одну без потери данных.
Выделяем ячейки, которые нужно объединить, затем переходим на вкладку «Разработчик» и кликаем по кнопочке «Макросы» .
Откроется диалоговое окно «Макрос» . В списке, выбираем нужное имя макроса: «MergeCell» , и жмем «Выполнить» .
Макрос выполнился: нужные ячейки объединены, и текст в них сохранен.
Если макрос был вставлен в рабочий лист , то запускаться он будет автоматически, в зависимости от действий пользователя. У меня макрос добавляет значения из выпадающего списка в ячейки справа. В код вставлен то диапазон ячеек, в котором находятся выпадающие списки.
Теперь, когда я выбираю из выпадающего списка значение, оно вписывается в ячейки, расположенные справа от той ячейки, в которой находится сам список. Это свидетельствует о выполнении макроса.
Если макрос вставлен в рабочую книгу , он также выполняется автоматически, когда пользователь производит определенные действия над книгой: закрывает ее, или сохраняет.
Если Вы создали пользовательскую функцию , то вставлять в документ ее также надо как функцию. У меня такая функция должна рассчитывать НДС.
Например, применим ее к ячейке А1 , со значением «100» . Выделяем ячейку, в которую будет вписан результат. Затем переходим на вкладку «Формулы» и нажимаем кнопочку «Вставить функцию» .
Откроется окно «Мастер функций» . В поле «Категория» выбираем из выпадающего списка «Определенные пользователем» , в поле «Выберите функцию» выбираем название из списка: «NDS» . Нажимаем «ОК» .
Макрос – это специальная программа, написанная на встроенном в Excel языке программирования Visual Basic for Application (VBA). Если вам часто приходится выполнять одни и те же операции в Эксель, то гораздо проще записать макрос или найти готовый код макроса, для выполнения определенных действий в Интернете.
Во втором случае, Вы найдете макрос в виде VBA-кода. В этом обычно и состоит вопрос: как добавить макрос в рабочий лист Excel, и как им пользоваться.
Как включить макросы в Excel
Чтобы Вы могли использовать макросы в работе, для начала их нужно включить. Кликаем по кнопочке «Файл» , в левом верхнем углу, и выбираем из списка «Параметры» .
В окне «Параметры Excel» перейдите на вкладку «Настройка ленты» , теперь в правой части окна поставьте галочку напротив пункта «Разработчик» и нажмите «ОК» .
Вверху на ленте появится новая вкладка «Разработчик» . На ней и будут находиться все необходимые команды для работы с макросами.
Теперь разрешим использование всех макросов. Снова открываем «Файл» – «Параметры» . Переходим на вкладку «Центр управления безопасностью» , и в правой части окна кликаем по кнопочке «Параметры центра управления безопасностью» .
Кликаем по вкладке «Параметры макросов» , выделяем маркером пункт «Включить все макросы» и жмем «ОК» . Теперь перезапустите Excel: закройте программу и запустите ее снова.
Как вставить макрос в Excel
Важно понимать, что макрос можно вставить в модуль, рабочий лист, рабочую книгу, или они могут являться частью пользовательской формы.
Вставим код макроса в модуль
Например, нужно объединить несколько ячеек в одну без потери данных. Как известно, Excel может объединять ячейки, сохраняя данные только из левой верхней ячейки. Чтобы сохранить все данные из объединяемых ячеек, будем использовать VBA-код.
Открываем редактор VBА: переходим на вкладку «Разработчик» и кликаем по кнопочке «Visual Basic» , также можно воспользоваться комбинацией «Alt+F11» .
С левой стороны редактора, в окне «Project» , выделяем мышкой рабочую книгу. Рабочая книга – это Ваш открытый документ Excel, в который нужно вставить макрос. У меня он называется «Книга1» .
Кликаем по выбранному пункту правой кнопкой мыши и выбираем из меню «Insert» – «Module» .
В окне «Project» появилась новая папка «Modules» , а в ней наш первый модуль с названием «Module1» .
Справа появится поле для ввода VBA-кода. С помощью комбинации «Ctrl+V» , вставляю в него код, который будет объединять несколько ячеек, без потери данных. Название макроса «MergeCell» .
Следите за тем, куда Вы вставляете код, это будет написано или в заголовке редактора, или в заголовке окна для вставки кода. Мы вставляем код в модуль, соответственно надпись – «Modul1(Code)» .
Сохраняем изменения, нажав комбинацию «Ctrl+S» . Если Вы используете Excel 2007 и выше, появится окно сохранения документа. В нем, в поле «Тип файла» , выберите из выпадающего списка «Книга Excel с поддержкой макросов» и нажмите «Сохранить» .
Вставим код макроса в рабочий лист
Например, у нас есть выпадающий список . Нужно сделать так, чтобы при выборе нескольких значений из него, они появлялись в ячейках справа.
Открываем редактор VBA и в окошке «Project» выделяем нужный лист, если их в рабочей книге несколько, на котором должен работать макрос: «Лист1 (Лист1)» . Кликаем по нему два раза мышкой.
Справа появиться окошко для ввода кода. Обратите внимание, мы вставляем код в рабочий лист, соответственно в заголовке написано «Лист1(Code)» . Сохраните изменения в документе, как было описано выше.
Чтобы вставить код макроса в рабочую книгу , кликните два раза мышкой по пункту «ЭтаКнига» и вставьте код в появившуюся область.
Создадим пользовательскую функцию
Например, создадим функцию, которая будет рассчитывать НДС. В окне «Project» кликаем по рабочему листу правой кнопкой мыши и выбираем «Insert» – «Module» .
В папке «Modules» , появляется второй модуль с названием «Module2» . Прописываем VBA-код в соответствующее окно, и сохраняем его, нажав «Ctrl+S» . Называться функция будет «NDS» .
Как запустить макросы в Excel
Теперь рассмотрим, как выполняются все созданные ранее макросы в документе Excel.
Если макрос был вставлен в модуль , то он запускается пользователем. У меня такой макрос объединяет несколько ячеек в одну без потери данных.
Выделяем ячейки, которые нужно объединить, затем переходим на вкладку «Разработчик» и кликаем по кнопочке «Макросы» .
Откроется диалоговое окно «Макрос» . В списке, выбираем нужное имя макроса: «MergeCell» , и жмем «Выполнить» .
Макрос выполнился: нужные ячейки объединены, и текст в них сохранен.
Если макрос был вставлен в рабочий лист , то запускаться он будет автоматически, в зависимости от действий пользователя. У меня макрос добавляет значения из выпадающего списка в ячейки справа. В код вставлен то диапазон ячеек, в котором находятся выпадающие списки.
Теперь, когда я выбираю из выпадающего списка значение, оно вписывается в ячейки, расположенные справа от той ячейки, в которой находится сам список. Это свидетельствует о выполнении макроса.
Если макрос вставлен в рабочую книгу , он также выполняется автоматически, когда пользователь производит определенные действия над книгой: закрывает ее, или сохраняет.
Если Вы создали пользовательскую функцию , то вставлять в документ ее также надо как функцию. У меня такая функция должна рассчитывать НДС.
Например, применим ее к ячейке А1 , со значением «100» . Выделяем ячейку, в которую будет вписан результат. Затем переходим на вкладку «Формулы» и нажимаем кнопочку «Вставить функцию» .
Откроется окно «Мастер функций» . В поле «Категория» выбираем из выпадающего списка «Определенные пользователем» , в поле «Выберите функцию» выбираем название из списка: «NDS» . Нажимаем «ОК» .
Давайте рассмотрим способы создания макросов в Excel. Первым делом Вам необходимо проверить настройку безопасности для того, что бы макросы были включены, иначе ничего не получится. Перейдите главное меню «Сервис-Макрос-Безопасность »
Поставьте флажок уровня на низкую (при запуске книг с макросами Excel вопросов о блокировке не задает) или среднюю (будет выдаваться предупреждение). Для учебных целей можно установить безопасность на низкую. Перезапустите Excel.
В Excel есть два способа создания макроса:
- Записать с помощью соответствующего пункта меню
- Создать вручную
Первый способ легкий и не требует никаких знаний в программировании. Достаточно в главном меню выбрать Сервис- >Макрос->Начать запись…
В открывшемся окне записи макроса необходимо указать его имя, которое будет выводиться в списке доступных макросов, можно добавить описание (для чего макрос, автор и т.д.), присвоить клавишу для быстрого запуска и указать в какую книгу сохранить макрос. После нажатия «OK » начнется запись
Теперь, все что Вы будете делать в рабочей книге (добавлять, изменять, удалять, создавать сводные и т.д.) все будет записываться. Для примера напишите в ячейке B3=45, B4 = 5, а в В5 формулу «=В3+B4*10». Для остановки записи необходимо нажать соответствующую кнопку:
После завершения записи наш макрос появится в списке Сервис->Макрос->Макросы ( Alt+ F8)
Остается его только выбрать и нажать «Выполнить ».
Все действия, которые мы произвели во время записи, с точностью повторятся. Для проверки очистите лист и выполните макрос. Но такой способ не удобен и практически в дальнейшем применить запись невозможно т.к. отсутствует универсальность. Плюс в том, что мы записывая какие либо действия получаем готовый код, который в умелых руках становится универсальным и затачивается под необходимые задачи. Давайте рассмотрим, какой код был записан. Для этого нажмите кнопку «Изменить» в меню Сервис->Макрос->Макросы .
Откроется следующий код:
Sub
Макрос1()
Range("B3").Select
ActiveCell.FormulaR1C1 = "45"
Range("B4").Select
ActiveCell.FormulaR1C1 = "5"
Range("B5").Select
ActiveCell.FormulaR1C1 = "=R[-2]C+R[-1]C*10"
Range("B6").Select
End Sub
Sub … End Sub – все макросы запускаемые через меню Сервис->Макрос->Макросы начинаются с ключевого слова Sub (процедура). Далее следует название процедуры «Макрос1», оно же имя нашего макроса которое указывается в момент начала записи. Пустые скобки обязательны! Следует учесть, что «запускаемая» процедура не должна содержать никаких параметров, иначе макрос исчезнет из списка. Все процедуры в VB завершаются командой End Sub . Sub имеет дополнительные ключевые слова Private и Public , определяющие зону видимости процедуры. Об этом будет рассказано в следующих статьях.
Range(" B3"). Select – эта и последующие команды были записаны когда мы выделяли ячейки B3, B4, B5.
ActiveCell.FormulaR1C1 – команда записывающая значение или формулу в выделенную ячейку после знака равенства. Данная запись присвоения ячейке значения и формулы не очень удобна. На следующих уроках мы будем использовать свойство Cells объекта рабочего листа Worksheet.
Вот и все. Простейшие действия записаны, но вот только такую запись на практике не применить.
Второй способ, запись кода VBA вручную. Данный способ будет рассмотрен на следующем уроке и на всех последующих, будем работать только вторым способом.
Ну и напоследок, видео-демонстрация записи макроса.
Видео: Запись макроса в Excel
Условное форматирование (5)
Списки и диапазоны (5)
Макросы(VBA процедуры) (63)
Разное (39)
Баги и глюки Excel (4)
Что такое макрос и где его искать?
Скачать файл, используемый в видеоуроке:
{"Bottom bar":{"textstyle":"static","textpositionstatic":"bottom","textautohide":true,"textpositionmarginstatic":0,"textpositiondynamic":"bottomleft","textpositionmarginleft":24,"textpositionmarginright":24,"textpositionmargintop":24,"textpositionmarginbottom":24,"texteffect":"slide","texteffecteasing":"easeOutCubic","texteffectduration":600,"texteffectslidedirection":"left","texteffectslidedistance":30,"texteffectdelay":500,"texteffectseparate":false,"texteffect1":"slide","texteffectslidedirection1":"right","texteffectslidedistance1":120,"texteffecteasing1":"easeOutCubic","texteffectduration1":600,"texteffectdelay1":1000,"texteffect2":"slide","texteffectslidedirection2":"right","texteffectslidedistance2":120,"texteffecteasing2":"easeOutCubic","texteffectduration2":600,"texteffectdelay2":1500,"textcss":"display:block; padding:12px; text-align:left;","textbgcss":"display:block; position:absolute; top:0px; left:0px; width:100%; height:100%; background-color:#333333; opacity:0.6; filter:alpha(opacity=60);","titlecss":"display:block; position:relative; font:bold 14px \"Lucida Sans Unicode\",\"Lucida Grande\",sans-serif,Arial; color:#fff;","descriptioncss":"display:block; position:relative; font:12px \"Lucida Sans Unicode\",\"Lucida Grande\",sans-serif,Arial; color:#fff; margin-top:8px;","buttoncss":"display:block; position:relative; margin-top:8px;","texteffectresponsive":true,"texteffectresponsivesize":640,"titlecssresponsive":"font-size:12px;","descriptioncssresponsive":"display:none !important;","buttoncssresponsive":"","addgooglefonts":false,"googlefonts":"","textleftrightpercentforstatic":40}}