Если вы хотя бы раз вручную заполняли десятки одинаковых таблиц, копировали данные между листами или каждый день выполняли одну и ту же последовательность действий в Excel, наверняка возникала мысль: «Неужели нельзя заставить программу сделать это самостоятельно?» На самом деле — можно, и для этого существует VBA. Рассмотрим, что это такое, и как написать первый макрос.
Что такое VBA в Excel
VBA (Visual Basic for Applications) — это встроенный язык программирования, который позволяет автоматизировать работу в Microsoft Excel и других приложениях Microsoft Office. С его помощью можно создавать макросы — небольшие программы, выполняющие заданные пользователем действия без постоянного участия человека.
Представьте: бухгалтер ежедневно получает однотипные отчеты, удаляет лишние столбцы, меняет названия колонок, сортирует данные и строит диаграмму. На обработку одного такого документа может уходить 20–30 минут. Если же один раз написать макрос на VBA, вся обработка будет занимать несколько секунд.
История VBA началась в начале 1990-х годов. Компания Microsoft разработала его на основе Visual Basic — популярного на тот момент языка программирования для создания приложений под Windows. Цель была простой: позволить пользователям самостоятельно расширять возможности офисных программ без необходимости писать сложные приложения на профессиональных языках программирования.
При этом VBA нельзя назвать полноценной заменой современным языкам программирования вроде Python или Java. Его главная задача — автоматизация работы внутри приложений Microsoft Office. Именно поэтому язык остается востребованным даже спустя десятилетия после своего появления.
Для чего нужен VBA
Главная задача VBA — автоматизировать рутинные действия в Excel. Достаточно один раз «объяснить» программе, что нужно сделать, а затем она будет повторять эти действия столько раз, сколько потребуется.
Что конкретно можно делать с помощью VBA:
- Автоматически обрабатывать большие объемы данных. Получится удалить лишние столбцы, отсортировать товары, очистить данные от пустых строк и подготовить таблицу к дальнейшей работе.
- Создавать отчеты за несколько секунд. Вместо того чтобы открывать разные файлы, копировать данные, строить диаграммы и оформлять таблицы вручную, можно запустить макрос, который выполнит все действия автоматически.
- Заполнять типовые документы. Получится в пару кликов формировать приказы, справки, служебные записки и другие документы по шаблону.
- Проверять данные на наличие ошибок. Макрос способен определить, заполнены ли обязательные поля, нет ли отрицательных значений, совпадают ли даты и не повторяются ли номера документов. Если обнаружится ошибка, Excel сразу сообщит об этом пользователю.
- Автоматизировать работу сразу в нескольких приложениях Microsoft Office. Например, VBA может взять данные из Excel, создать письмо в Outlook, прикрепить отчет и подготовить его к отправке или сформировать презентацию в PowerPoint на основе расчетов из таблицы.
- Создавать собственные функции. Если стандартных возможностей Excel недостаточно, можно написать пользовательскую функцию. После этого она будет работать так же, как встроенные опции типа СУММ(), ЕСЛИ() или ВПР(), но выполнять именно те вычисления, которые нужны пользователю.
Во многих компаниях макросы, написанные на VBA, значительно экономят рабочее время, особенно если сотрудники регулярно работают с большими таблицами и повторяющимися задачами.
Кому может пригодиться VBA
Так как VBA встроен в Excel, этот язык программирования востребован у специалистов самых разных профессий. Например:
- Бухгалтеры. VBA помогает автоматизировать расчеты, сверку документов, обработку банковских выписок и подготовку отчетности. Например, за несколько секунд способен объединить данные из нескольких файлов и сформировать итоговый документ.
- Финансовые аналитики. Макросы позволяют быстро обрабатывать большие объемы данных, строить финансовые модели, составлять прогнозы. Так, VBA может ежедневно собирать показатели из разных таблиц и автоматически формировать итоговую сводку.
- Бизнес-аналитики и аналитики данных. VBA помогает очищать данные, объединять несколько таблиц, удалять дубликаты, проверять корректность информации и подготавливать данные для дальнейшего анализа или визуализации.
- Менеджерам проектов и руководителям. Макросы позволяют автоматически формировать отчеты по задачам, собирать информацию из нескольких источников, строить диаграммы и отслеживать выполнение проектов.
- HR-специалистам. VBA упрощает обработку анкет кандидатов, подготовку кадровых документов, ведение списков сотрудников и анализ результатов внутренних опросов.
- Инженерам и техническим специалистам. Язык используют для обработки результатов испытаний, подготовки технической документации и формирования отчетов по производственным данным.
Еще VBA пригодится начинающим IT-специалистам: для тестировщиков, системных администраторов и бизнес-аналитиков он может стать первым языком программирования. С его помощью получится ускорять выполнение повторяющихся процессов, быстро обрабатывать данные и знакомиться с основами программирования на практических задачах.
Из чего состоит макрос, написанный на VBA
Так выглядит простейший макрос на VBA:
Sub Hello() MsgBox "Привет, мир!" End Sub
На первый взгляд код может показаться непонятным, но на самом деле он состоит всего из трех основных элементов.
- Sub Hello() — начало макроса. Ключевое слово Sub сообщает Excel, что начинается новая процедура (макрос), а Hello — это ее название. Оно может быть любым, главное, чтобы было понятным и не содержало пробелов.
- MsgBox «Привет, мир!» — команда, которая выводит на экран диалоговое окно с указанным сообщением. MsgBox — сокращение от Message Box («окно с сообщением»). Вместо текста «Привет, мир!» можно написать любое другое сообщение. Например — MsgBox «Макрос успешно выполнен!».
- End Sub — конец макроса. Эта команда сообщает Excel, что процедура завершена. Все инструкции, которые должны выполняться, располагаются между Sub и End Sub.
Таким образом, структура любого макроса выглядит одинаково:
Sub ИмяМакроса() Здесь располагаются команды End Sub
Чтобы обратиться к одной или нескольким ячейкам в Excel, в VBA используют команду Range():
- Одна ячейка указывается по ее адресу: Range(«A1») = 10
Этот код запишет число 10 в ячейку A1. - Диапазон ячеек задается через двоеточие: Range(«A1:C6») = 12
В результате все ячейки от A1 до C6 будут заполнены числом 12. - Несколько несмежных ячеек или диапазонов перечисляются через запятую: Range(«A1:C6, F5») = 30
В этом случае число 30 появится во всех ячейках диапазона A1, а также в отдельной ячейке F5.
Таким образом, с помощью Range() можно работать как с отдельными ячейками, так и с целыми диапазонами.
Как создать макрос с помощью VBA в Excel
VBA работает по простому принципу: пользователь записывает последовательность действий в виде программного кода, а Excel выполняет эти команды в заданном порядке при запуске макроса.
Каждая строка кода — это отдельная инструкция, например: выбрать диапазон ячеек, выполнить вычисления, отсортировать данные, изменить форматирование или сохранить файл. Благодаря этому даже сложные и многоэтапные операции можно автоматизировать и выполнять за несколько секунд.
Создать первый макрос совсем несложно: рассмотрим процесс пошагово.
Шаг 1. Откройте Excel и перейдите во вкладку «Разработчик». Если ее нет, включите отображение через параметры Excel. Как это сделать:
- Откройте Excel и нажмите «Файл» → «Параметры».
- В открывшемся окне выберите раздел «Настроить ленту».
- В правой части окна, в списке основных вкладок, найдите пункт «Разработчик» и установите рядом с ним флажок.
- Нажмите ОК.

Шаг 2. Нажмите кнопку Visual Basic. Откроется редактор VBA.
Шаг 3. В редакторе выберите Insert → Module. Будет создан новый модуль, в котором хранится код.

Шаг 4. Введите программу.
Для знакомства с VBA удобно использовать самую простую программу, например, Hello. Этот макрос выводит на экран небольшое окно с текстом «Привет, мир!». Введите:
Sub Hello() MsgBox "Привет, мир!" End Sub
Шаг 5. Сохраните макрос и книгу Excel:
- в редакторе VBA нажмите File → Save или используйте сочетание клавиш Ctrl + S;
- закройте окно редактора и вернитесь в Excel;
- выберите «Файл» → «Сохранить как»;
- укажите папку, в которой хотите сохранить файл;
- в поле «Тип файла» выберите «Книга Excel с поддержкой макросов (*.xlsm)»;
- нажмите «Сохранить».
Важно! Если сохранить книгу в обычном формате .xlsx, макросы в ней не сохранятся.
Шаг 6. Запустите макрос. Например, через меню «Макросы» в Excel:
- закройте редактор VBA и вернитесь в Excel;
- откройте вкладку «Разработчик» и нажмите кнопку «Макросы» (или используйте сочетание клавиш Alt + F8);
- в открывшемся окне выберите макрос Hello;
- нажмите кнопку «Выполнить».

Теперь рассмотрим более полезный пример. Допустим, в таблице находятся продажи конкретных товаров за месяц:
Чтобы не подсчитывать итоговое количество продаж вручную, можно написать макрос:
Sub SumSales()
Range("B5").Value = WorksheetFunction.Sum(Range("B2:B4"))
End Sub
Что делает этот код:
- Sub SumSales() — создает новый макрос с именем SumSales;
- Range(«B2:B4») — выбирает диапазон с числами;
- WorksheetFunction.Sum() — вычисляет сумму значений;
- Range(«B5»).Value — записывает результат в ячейку B5.

VBA в Excel: коротко о главном
- VBA — встроенный язык программирования Microsoft Office для автоматизации работы в Excel и других офисных приложениях.
- Основное преимущество VBA — возможность заменить повторяющиеся действия макросами, которые выполняются автоматически за считаные секунды.
- VBA востребован во многих профессиях: его используют бухгалтеры, аналитики, экономисты, HR-специалисты, менеджеры проектов, инженеры и начинающие IT-специалисты.
- Создать первый макрос несложно. Достаточно открыть редактор VBA, добавить модуль, написать несколько строк кода и запустить программу прямо из Excel.
