Макрос в Excel — набор команд на языке VBA (Visual Basic for Applications), который выполняется автоматически по одному нажатию. Создаётся двумя способами: через макрорекордер без знания кода — или вручную в редакторе VBA. Перед началом нужно активировать вкладку «Разработчик» и выбрать уровень безопасности в настройках. Рекордер подходит для простых линейных задач, ручной VBA — когда нужна логика, циклы или интеграция с другими приложениями Office.
Макрос — мини-программа внутри Excel: автоматически выполняемая последовательность VBA-команд. Принцип простой: вы один раз записываете нужные действия или пишете код, а потом запускаете их одним кликом сколько угодно раз.
Учитесь бесплатно за счёт государства
Экономия до 100 000 ₽ на любой программе
Представьте: каждый понедельник вы вручную форматируете отчёт — красите шапку, выравниваете столбцы, убираете пустые строки. Макрос делает то же самое за секунду. Создали один раз — работает бесконечно.
Макросы в Excel используют бухгалтеры (автоматизация отчётов), аналитики (обработка массивов данных), маркетологи (выгрузки и сортировка) и все, кто регулярно повторяет одни и те же операции в таблицах. Главный эффект — экономия времени и исключение ошибок ручного ввода.
Макросы берут на себя рутину, которую не закрыть формулами:
Через ручной VBA-код возможности шире: управление Word, вставка диаграмм в PowerPoint, синхронизация с базами данных Access. Пользовательские функции доступны только через ручной код — рекордер их не записывает.
По умолчанию макросы в Excel отключены политикой безопасности. Чтобы начать работу, потребуется два обязательных шага: добавить вкладку «Разработчик» на ленту и задать уровень разрешений в Центре управления безопасностью.

Вкладка скрыта по умолчанию. Включите её так:
На ленте появятся кнопки: «Запись макроса», «Макросы», «Visual Basic», «Относительные ссылки». Горячие клавиши для быстрого доступа: Alt+F11 открывает редактор VBA, Alt+F8 — диалог управления макросами.
Путь: Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов.
Доступны четыре режима:
Рекомендуемый вариант — «с уведомлением»: Excel будет спрашивать разрешение перед каждым запуском, и вы сами решаете, доверять ли конкретному файлу.
Выбор способа зависит от сложности задачи и ваших знаний о VBA:
| Параметр |
Рекордер |
Ручной VBA |
|---|---|---|
| Знание кода | Не нужно | Нужны основы |
| Сложность задач | Простые, линейные | Любая логика |
| Качество кода | Избыточный | Оптимальный |

Макрорекордер — инструмент автоматической записи: он переводит ваши действия в Excel в VBA-код. Вы ничего не пишете вручную.
Алгоритм:
Пример: рекордер записал ввод слова «Итого» в ячейку A1 и сгенерировал такой код:
Sub ВводТекста()
Range(«A1»).Select
ActiveCell.FormulaR1C1 = «Итого»
Range(«A2»).Select
End Sub
Код рабочий, но избыточный — рекордер фиксирует каждое движение курсора. Для сложных сценариев его оптимизируют вручную.

Когда нужны условия, циклы или работа с внешними данными — пишите код в редакторе VBA напрямую.
Путь: Alt+F11 → меню «Вставка» → «Модуль» → введите код → Ctrl+S.
Базовая структура любого макроса:
Sub ИмяМакроса()
‘ Комментарий (апостроф — Excel его не выполняет)
‘ Ваши команды здесь
End Sub
Ключевые объекты VBA для работы с Excel:
Ручной код выбирают, когда нужны: проверки условий (If Then Else), перебор строк (For Each), пользовательские функции, обработка ошибок (On Error) и интеграция с другими приложениями Office.
Перед записью через рекордер выберите режим адресации — он определяет, как макрос будет обращаться к ячейкам при каждом запуске.
| Параметр |
Абсолютная запись |
Относительная запись |
|---|---|---|
| Адресация | По точному адресу ячейки | От текущей активной ячейки |
| Код-пример | Range(«A2»).Select | ActiveCell.Offset(1, 0).Select |
| Поведение | Всегда одна и та же ячейка | Перемещается относительно позиции |
| Включение по умолчанию | Да | Кнопка «Относительные ссылки» на вкладке «Разработчик» |
Абсолютная запись подходит для фиксированных шаблонов, где данные всегда на одном месте. Относительная — для обработки списков переменной длины, когда нужно последовательно пройтись по строкам.
Рекордер пишет только линейный код — без логики и динамики. Всё, что требует условий или нестандартных сценариев, — за его пределами.
| Задача |
Рекордер |
Решение через ручной VBA |
|---|---|---|
| Проверка условия (если значение > 0) | ❌ | If Then Else |
| Перебор всех строк таблицы | ❌ | For Each / Do While |
| Пользовательская функция | ❌ | Function…End Function |
| Работа с внешними файлами | ❌ | Open / QueryTable |
| Обработка ошибок | ❌ | On Error Resume Next |
| Управление Word или PowerPoint | ❌ | CreateObject(«Word.Application») |
| Защищённые листы | ❌ | Sheet.Unprotect |
Для однотипного форматирования рекордер справляется отлично. Для всего остального — нужен ручной код или оптимизация уже записанного.
Два рабочих примера с построчными комментариями. Откройте редактор VBA (Alt+F11 → Вставка → Модуль), скопируйте нужный Sub и запустите через Alt+F8.

Задача: выделить первую строку таблицы — жирный шрифт, белый текст, тёмно-синий фон.
Sub ФорматЗаголовков()
‘ Выбираем диапазон заголовков
Range(«A1:F1»).Select
Хотите сменить профессию или повысить квалификацию?
Федеральный проект «Активные меры содействия занятости» даёт возможность пройти обучение бесплатно за счёт государства
‘ Форматируем шрифт
With Selection.Font
.Bold = True ‘ Жирный
.Size = 12 ‘ Размер 12 пт
.Color = RGB(255, 255, 255) ‘ Белый текст
End With
‘ Задаём цвет заливки ячеек
With Selection.Interior
.Color = RGB(31, 73, 125) ‘ Тёмно-синий фон
End With
End Sub
Результат: запускайте макрос на любом листе — заголовки A1:F1 мгновенно получают единый стиль без ручного форматирования.
Задача: перенести данные из «Лист1» на «Лист2» только значениями, без формул и форматирования.
Sub КопироватьДанные()
‘ Копируем диапазон с исходного листа
Sheets(«Лист1»).Range(«A1:D100»).Copy
‘ Вставляем только значения на целевой лист
Sheets(«Лист2»).Range(«A1»).PasteSpecial _
Paste:=xlPasteValues
‘ Снимаем «бегущую рамку» выделения
Application.CutCopyMode = False
End Sub
PasteSpecial с параметром xlPasteValues вставляет только данные — без формул. Это исключает случайные ссылки на ячейки исходного листа.

Три операции жизненного цикла: сохранение в правильном формате, запуск одним из нескольких способов и удаление. Диалог «Макросы» открывается через Alt+F8 или кнопку «Макросы» на вкладке «Разработчик».

Стандартный формат .xlsx не поддерживает VBA-код. При попытке сохранить файл с макросом в .xlsx Excel предупреждает: «Следующие компоненты этой книги не могут быть сохранены в книге без поддержки макросов». Если нажать «Да» — весь код удаляется без возможности восстановления.
Правильный путь: Файл → Сохранить как → «Книга Excel с поддержкой макросов (*.xlsm)».
Именно файл .xlsm хранит VBA-код вместе с данными таблицы и передаётся коллегам для повторного использования макросов.
Три варианта запуска:
Для редактирования: Alt+F11 → в Project Explorer найдите нужный модуль → двойной клик → правьте код → Ctrl+S. После каждого изменения проверяйте результат на тестовых данных.
Путь через диалог: Alt+F8 → выбрать макрос из списка → «Удалить» → подтвердить.
Альтернатива: в редакторе VBA (Alt+F11) откройте модуль, найдите нужную подпрограмму Sub и удалите её вручную. Если весь модуль больше не нужен — кликните правой кнопкой в Project Explorer → «Удалить модуль».
Удаление необратимо. Перед операцией сделайте резервную копию .xlsm-файла.
Хотите автоматизировать работу в Excel и освоить VBA системно? В рамках федерального проекта «Активные меры содействия занятости» можно пройти обучение по аналитике данных и работе с таблицами — онлайн, бесплатно, без отрыва от основной работы. Смотрите каталог доступных программ и выбирайте подходящее направление.
Макрос — автоматически выполняемый набор команд на языке VBA. Вы один раз записываете нужные действия через макрорекордер или пишете код вручную, а затем запускаете их одной кнопкой сколько угодно раз. Экономит время на форматировании, копировании данных, формировании отчётов и других повторяющихся операциях.
XLSM — формат Excel с поддержкой макросов. При сохранении файла с макросом в формате .xlsx Excel автоматически удаляет весь VBA-код без возможности восстановления. Всегда сохраняйте файлы с макросами через «Сохранить как» → «Книга Excel с поддержкой макросов (*.xlsm)».
Рекордер не поддерживает условную логику (If Then Else), циклы (For, While), пользовательские функции, работу с внешними источниками данных, управление другими приложениями Office и обработку ошибок. Для этих задач пишите VBA-код вручную в редакторе, который открывается через Alt+F11.
Абсолютная запись всегда обращается к конкретной ячейке: Range(«A2»).Select. Относительная перемещается от активной ячейки: ActiveCell.Offset(1, 0). Абсолютная включена по умолчанию; для относительной нажмите кнопку «Относительные ссылки» на вкладке «Разработчик» перед записью.
Нажмите Alt+F11 — откроется редактор Visual Basic for Applications. Альтернатива: вкладка «Разработчик» → кнопка «Visual Basic». В редакторе через Project Explorer найдите нужный модуль и откройте его двойным кликом. Именно здесь пишется и редактируется весь VBA-код.
Макросы из ненадёжных источников могут содержать вредоносный код. Оптимальный режим — «Отключить все макросы с уведомлением»: перед каждым запуском Excel запрашивает подтверждение. Не используйте режим «Включить все» для файлов из интернета или от незнакомых отправителей.
В разделе «Готовые примеры» этой статьи — два рабочих макроса с кодом VBA и построчными комментариями. Скопируйте в редактор (Alt+F11 → Вставка → Модуль) и адаптируйте под свои задачи. Для системного изучения VBA и Excel смотрите ответ на последний вопрос этого раздела.
Откройте Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов. Выберите «Отключить все макросы без уведомления». После следующего запуска Excel все макросы в открываемых файлах будут заблокированы автоматически.
Каждый макрос — подпрограмма VBA: Sub ИмяМакроса() … End Sub. Внутри — операторы: выбор диапазона (Range, ActiveCell), ввод данных, форматирование. Строки после апострофа (‘) — комментарии, Excel их не выполняет. Один модуль может содержать несколько подпрограмм Sub.
Программа «Excel. Системный аналитик: моделирование данных в табличных процессорах» (72 часа, онлайн, занятия 1–2 раза в неделю) охватывает макросы, VBA и аналитику данных. Доступна бесплатно для жителей России в рамках национального проекта «Кадры» — осталось 55 мест. Подробнее — в каталоге программ ТГУ.
Подайте заявку —
забронируйте место в группе
45 000 мест на 2026 год. Бесплатное обучение по федеральному проекту «Активные меры содействия занятости»