Гайды 07.05.2026 14 мин чтения

Макросы VBA в Excel — первый макрос за 10 минут

Пошаговое руководство по VBA в Excel для начинающих. От включения вкладки Разработчик до написания полноценных макросов с переменными, циклами и условиями. Два практических примера с кодом.

Представьте: каждый понедельник вы открываете файл с данными, удаляете пустые строки, форматируете заголовки, добавляете границы таблицы, меняете формат чисел и сохраняете результат. На это уходит 15-20 минут. А теперь представьте, что всё это делается за 2 секунды одним нажатием кнопки. Это и есть VBA — язык макросов, встроенный в Excel.

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

Что такое VBA и зачем он нужен

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

Когда VBA незаменим

  • Повторяющиеся задачи — форматирование еженедельных отчётов, обработка выгрузок из 1С, подготовка данных для загрузки в другие системы
  • Массовые операции — обработка сотен файлов, переименование листов, объединение данных из множества книг
  • Сложная логика — действия, которые невозможно реализовать формулами: условное форматирование по сложным правилам, генерация документов, интерактивные формы
  • Взаимодействие между приложениями — передача данных из Excel в Word, создание писем в Outlook, импорт из текстовых файлов

Когда VBA — перебор

Не используйте VBA, если задачу можно решить формулами. Формулы пересчитываются автоматически, их видно в ячейках, их проще отладить. VBA стоит применять только когда формул недостаточно. Например, СУММЕСЛИ, ВПР (VLOOKUP), ИНДЕКС+ПОИСКПОЗ, сводные таблицы и условное форматирование решают 80% задач без единой строки кода.

Шаг 1: Включаем вкладку «Разработчик»

По умолчанию вкладка «Разработчик» скрыта в Excel. Без неё вы не сможете создавать и редактировать макросы. Включается она один раз:

  1. Откройте Excel
  2. Нажмите ФайлПараметры (Options)
  3. Перейдите в раздел «Настроить ленту» (Customize Ribbon)
  4. В правом столбце «Основные вкладки» найдите «Разработчик» (Developer) и поставьте галочку
  5. Нажмите OK

На ленте появится новая вкладка «Разработчик» с кнопками для работы с макросами, редактором VBA и элементами управления формами.

Совет: быстрый доступ к редактору VBA — комбинация Alt+F11. Она работает в любом приложении Office и не требует вкладки «Разработчик».

Шаг 2: Записываем первый макрос

Самый простой способ создать макрос — записать его. Excel будет фиксировать все ваши действия и автоматически генерировать VBA-код.

Подготовка

Создайте простую таблицу с данными для практики. Например, список из 5-10 строк с колонками: Имя, Должность, Зарплата. Не форматируйте таблицу — мы будем записывать макрос форматирования.

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

  1. Перейдите на вкладку «Разработчик»
  2. Нажмите «Запись макроса» (Record Macro)
  3. В появившемся окне:
    • Имя макроса: ФорматироватьОтчёт (без пробелов!)
    • Сочетание клавиш: Ctrl+Shift+F (необязательно, но удобно)
    • Сохранить в: «Эта книга» (This Workbook)
    • Описание: Форматирует таблицу с данными сотрудников
  4. Нажмите OK — запись началась

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

  1. Выделите строку заголовков
  2. Сделайте шрифт жирным (Ctrl+B)
  3. Задайте заливку ячеек заголовков цветом
  4. Выделите всю таблицу
  5. Добавьте границы (Ctrl+1 → Границы → Все границы)
  6. Выделите столбец с зарплатами
  7. Примените числовой формат с разделителем тысяч (Ctrl+Shift+!)
  8. Подгоните ширину столбцов (выделите все → двойной клик на границе столбца)

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

Обратите внимание: во время записи макроса записывается каждое ваше действие, включая ошибочные клики. Если вы ошиблись — лучше остановить запись, удалить макрос и записать заново. Либо позже отредактировать код вручную.

Шаг 3: Смотрим и разбираем код

Теперь откроем код, который Excel сгенерировал автоматически:

  1. Нажмите Alt+F11 — откроется редактор VBA
  2. В левой панели (Project Explorer) найдите вашу книгу
  3. Раскройте папку «Модули» (Modules) → дважды кликните на «Module1»
  4. Вы увидите записанный код макроса

Код будет выглядеть примерно так:

Sub ФорматироватьОтчёт()
'
' ФорматироватьОтчёт Макрос
' Форматирует таблицу с данными сотрудников
'
    Rows("1:1").Select
    Selection.Font.Bold = True
    With Selection.Interior
        .Color = 15773696
    End With
    
    Range("A1").CurrentRegion.Select
    Selection.Borders.LineStyle = xlContinuous
    
    ' ... и так далее
End Sub

Разберём ключевые элементы:

  • Sub ... End Sub — начало и конец макроса (процедуры)
  • Строки с апострофом (') — комментарии, они не выполняются
  • .Select — выделение объекта (ячейки, диапазона, строки)
  • Selection. — действие с выделенным объектом
  • Range("A1") — обращение к ячейке A1
  • Rows("1:1") — обращение к первой строке
  • .Font.Bold = True — сделать шрифт жирным
  • .Interior.Color — цвет заливки ячейки
Совет: записанный макрос часто содержит избыточный код (лишние .Select и Selection). Это нормально — запись фиксирует каждое действие буквально. Со временем вы научитесь писать более чистый код, обращаясь к объектам напрямую: Rows("1:1").Font.Bold = True вместо Rows("1:1").Select + Selection.Font.Bold = True.

Шаг 4: Основы VBA — переменные, циклы, условия

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

Переменные

Переменная — это именованная ячейка памяти, в которой хранится значение. Объявляются через Dim:

Dim имяСотрудника As String
Dim зарплата As Long
Dim процент As Double

имяСотрудника = "Иванов"
зарплата = 85000
процент = 0.13

Основные типы данных: String (текст), Long (целое число), Double (дробное число), Boolean (True/False), Date (дата).

Условия (If...Then)

If зарплата > 100000 Then
    MsgBox "Высокая зарплата"
ElseIf зарплата > 50000 Then
    MsgBox "Средняя зарплата"
Else
    MsgBox "Ниже среднего"
End If

Циклы (For...Next)

' Перебрать строки с 2 по 100
Dim i As Long
For i = 2 To 100
    If Cells(i, 1).Value = "" Then Exit For
    Cells(i, 4).Value = Cells(i, 3).Value * 0.87
Next i

Этот цикл проходит по строкам со 2-й по 100-ю, проверяет, не пуста ли ячейка в столбце A, и записывает в столбец D значение из столбца C, умноженное на 0.87 (зарплата после вычета 13% НДФЛ).

Практический пример 1: Автоформатирование отчёта

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

Sub ФорматироватьОтчёт()
    Dim таблица As Range
    Dim заголовки As Range
    Dim последняяСтрока As Long
    Dim последнийСтолбец As Long
    
    ' Определяем размер таблицы
    последняяСтрока = Cells(Rows.Count, 1).End(xlUp).Row
    последнийСтолбец = Cells(1, Columns.Count).End(xlToLeft).Column
    
    ' Задаём диапазоны
    Set таблица = Range(Cells(1, 1), Cells(последняяСтрока, последнийСтолбец))
    Set заголовки = Range(Cells(1, 1), Cells(1, последнийСтолбец))
    
    ' Форматируем заголовки
    With заголовки
        .Font.Bold = True
        .Font.Size = 11
        .Interior.Color = RGB(68, 114, 196)  ' Синий фон
        .Font.Color = RGB(255, 255, 255)      ' Белый текст
        .HorizontalAlignment = xlCenter
    End With
    
    ' Добавляем границы
    With таблица.Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
        .Color = RGB(0, 0, 0)
    End With
    
    ' Подгоняем ширину столбцов
    таблица.Columns.AutoFit
    
    MsgBox "Отчёт отформатирован!", vbInformation
End Sub

Этот макрос автоматически определяет размер таблицы, поэтому работает с таблицами любого размера — хоть 5 строк, хоть 50 000.

Как запустить макрос: нажмите Alt+F8, выберите макрос из списка и нажмите «Выполнить». Или используйте сочетание клавиш, которое вы назначили при создании.

Практический пример 2: Перенос данных на другой лист

Частая задача: из общего списка данных выбрать строки по условию и скопировать на другой лист. Например, выбрать всех сотрудников с зарплатой выше 80 000 и перенести на лист «Высокая ЗП».

Sub ПеренестиПоУсловию()
    Dim источник As Worksheet
    Dim результат As Worksheet
    Dim последняяСтрока As Long
    Dim строкаРезультата As Long
    Dim i As Long
    
    ' Назначаем листы
    Set источник = Sheets("Данные")
    
    ' Создаём лист результата, если его нет
    On Error Resume Next
    Set результат = Sheets("Высокая ЗП")
    On Error GoTo 0
    
    If результат Is Nothing Then
        Set результат = Sheets.Add(After:=Sheets(Sheets.Count))
        результат.Name = "Высокая ЗП"
    Else
        результат.Cells.Clear  ' Очищаем старые данные
    End If
    
    ' Копируем заголовки
    источник.Rows(1).Copy результат.Rows(1)
    
    ' Перебираем строки и копируем подходящие
    последняяСтрока = источник.Cells(источник.Rows.Count, 1).End(xlUp).Row
    строкаРезультата = 2
    
    For i = 2 To последняяСтрока
        If источник.Cells(i, 3).Value > 80000 Then  ' Столбец C = зарплата
            источник.Rows(i).Copy результат.Rows(строкаРезультата)
            строкаРезультата = строкаРезультата + 1
        End If
    Next i
    
    ' Подгоняем ширину столбцов
    результат.Columns.AutoFit
    
    ' Переходим на лист результата
    результат.Activate
    
    MsgBox "Перенесено строк: " & строкаРезультата - 2, vbInformation
End Sub

Макрос создаёт новый лист (или очищает существующий), копирует заголовки, затем проходит по всем строкам и переносит те, где зарплата (столбец C) больше 80 000. В конце показывает, сколько строк перенесено.

Безопасность макросов

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

Правила безопасности

  • Никогда не включайте макросы в файлах от незнакомых отправителей
  • Никогда не скачивайте и не запускайте макросы из непроверенных источников
  • Если при открытии файла появляется жёлтая полоса «Включить содержимое» — подумайте, доверяете ли вы источнику файла

Настройка уровня безопасности макросов

  1. Вкладка «Разработчик»«Безопасность макросов»
  2. Рекомендуемый уровень: «Отключить все макросы с уведомлением»
  3. Этот уровень блокирует макросы по умолчанию, но позволяет включить их для доверенных файлов
Внимание: не устанавливайте уровень «Включить все макросы» — это делает ваш компьютер уязвимым. Всегда используйте уровень с уведомлением и включайте макросы только в файлах, которым доверяете.

Сохранение файлов с макросами

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

  • .xlsm — книга Excel с поддержкой макросов
  • .xlsb — двоичная книга Excel (тоже поддерживает макросы, работает быстрее с большими файлами)

Стандартный формат .xlsx не поддерживает макросы. Если вы сохраните файл с макросами как .xlsx, Excel предупредит, что макросы будут удалены. Всегда выбирайте «Сохранить как» → формат .xlsm.

Обратите внимание: если вы хотите, чтобы макрос был доступен во всех файлах Excel (а не только в одной книге), сохраните его в Личной книге макросов (Personal Macro Workbook). Она загружается автоматически при каждом запуске Excel. При записи макроса в поле «Сохранить в» выберите «Личная книга макросов».

Куда двигаться дальше

Вы создали свой первый макрос — отлично! Вот план дальнейшего развития:

Уровень 2: Уверенный пользователь

  • Работа с диапазонами (Range, Cells, Rows, Columns)
  • Циклы For Each для перебора ячеек
  • Работа с несколькими листами и книгами
  • Обработка ошибок (On Error)

Уровень 3: Продвинутый

  • Пользовательские формы (UserForms)
  • Работа с файловой системой (открытие, создание файлов)
  • Взаимодействие с Word и Outlook
  • Подключение к базам данных

Уровень 4: Эксперт

  • Работа с API (HTTP-запросы)
  • Классы и объектно-ориентированное программирование
  • Оптимизация производительности для больших данных
  • Создание надстроек (Add-ins)

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

Часто задаваемые вопросы

Что такое VBA в Excel?
VBA (Visual Basic for Applications) — это язык программирования, встроенный в Microsoft Office. Он позволяет автоматизировать повторяющиеся действия в Excel: форматирование, обработку данных, создание отчётов и многое другое.
Нужно ли уметь программировать, чтобы использовать VBA?
Нет, начать можно без опыта программирования. Функция записи макросов позволяет автоматически генерировать VBA-код — вы просто выполняете действия мышью, а Excel записывает их в виде кода. Затем можно изучить и отредактировать этот код.
Безопасны ли макросы VBA?
Макросы, которые вы создаёте сами — полностью безопасны. Но макросы из непроверенных источников могут содержать вредоносный код. Никогда не включайте макросы в файлах, полученных от незнакомых отправителей.
Работают ли макросы VBA в Excel Online?
Нет, VBA работает только в десктопной (настольной) версии Excel. Веб-версия Excel и мобильные приложения не поддерживают макросы. Для автоматизации в онлайн-версии используется Office Scripts (на TypeScript).
В каком формате сохранять файл Excel с макросами?
Файлы с макросами нужно сохранять в формате .xlsm (Книга Excel с поддержкой макросов). Стандартный формат .xlsx не поддерживает макросы — при сохранении в нём все макросы будут удалены.
Чем VBA отличается от формул Excel?
Формулы работают внутри ячеек и пересчитываются автоматически. VBA — это отдельные программы (макросы), которые запускаются по команде и могут выполнять действия, недоступные формулам: изменять форматирование, создавать файлы, отправлять письма, работать с несколькими листами одновременно.

Все версии Microsoft Office

Программы в составе Microsoft Office

Microsoft Word

Текстовый редактор

Microsoft Excel

Таблицы и диаграммы

Microsoft Powerpoint

Создание презентаций

Microsoft Outlook

Почта и календарь

Microsoft Onenote

Цифровая записная книжка

Microsoft Publisher

Макеты и публикации

Microsoft Teams

Онлайн встречи и чаты

Полезные инструкции