Добавить в корзинуПозвонить
Найти в Дзене
Макрос решает

Разбор записанного макроса и оптимизация кода в Excel

После того как вы записали свой первый макрос с помощью средства записи макросов, важно научиться понимать, как устроен созданный код. В этом уроке мы шаг за шагом разберем структуру макроса, объясним каждую его часть и научимся его оптимизировать. Это поможет вам создавать более чистый, понятный и эффективный код в будущем. Каждый макрос начинается с ключевого слова Sub (сокращение от "Subroutine" — подпрограмма) и заканчивается End Sub. Эти команды показывают редактору VBA, где начинается и где заканчивается макрос. Пример начала и окончания макроса: Sub ВставитьЛист() ' Ваш код здесь End Sub Название макроса (ВставитьЛист) задается сразу после Sub. Оно должно быть понятным, отражающим суть выполняемых действий. Простые и логичные имена значительно упростят вам жизнь при написании и сопровождении кода. В коде можно заметить строки, выделенные зелёным цветом. Это комментарии. Они начинаются с символа ' (апостроф). Комментарии не влияют на выполнение макроса, но помогают: Пример коммен
Оглавление

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

1. Структура макроса: от начала до конца

Каждый макрос начинается с ключевого слова Sub (сокращение от "Subroutine" — подпрограмма) и заканчивается End Sub. Эти команды показывают редактору VBA, где начинается и где заканчивается макрос. Пример начала и окончания макроса:

Sub ВставитьЛист()
' Ваш код здесь
End Sub

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

2. Комментарии в коде: зачем они нужны

В коде можно заметить строки, выделенные зелёным цветом. Это комментарии. Они начинаются с символа ' (апостроф). Комментарии не влияют на выполнение макроса, но помогают:

  • Пояснять, что делает конкретный участок кода.
  • Облегчать понимание кода другим пользователям (и себе через месяц!).
  • Делать проект более структурированным.

Пример комментария:

' Вставляем новый лист

3. Что именно делает записанный макрос

Когда вы записываете действия в Excel, средство записи макросов фиксирует каждое движение: выделение ячейки, изменение шрифта, вставку листа и так далее. В нашем примере макрос:

  • Выбирает лист.
  • Вставляет новый лист.
  • Выбирает ячейку A1.
  • Вставляет в неё текст "Место для заголовка".
  • Применяет к тексту форматирование: шрифт, размер, жирность.
  • Создает нижнее подчеркивание в диапазоне A1:J1.
  • Отключает отображение сетки на листе.

Казалось бы, простые действия, но они превращаются в множество строк кода.

4. Почему записанный код бывает избыточным

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

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

Итог — макрос получается громоздким и менее эффективным.

5. Оптимизация кода: как это выглядит

Посмотрим, как можно переписать наш макрос, чтобы он стал короче и понятнее.

Оригинальный код:
(создан автоматически средством записи)

Sub ВставитьЛист()
Sheets.Add
Range("A1").Select
ActiveCell.FormulaR1C1 = "Место для заголовка"
Range("A1").Select
With Selection.Font
.Name = "Calibri"
.Size = 16
.Bold = True
End With
Range("A1:J1").Borders(xlEdgeBottom).LineStyle = xlContinuous
ActiveWindow.DisplayGridlines = False
End Sub

Оптимизированный код:
(написанный вручную)

Sub ВставитьЛист2()
Sheets.Add
Range("A1").Value = "Место для заголовка"
With Range("A1").Font
.Size = 16
.Bold = True
End With
Range("A1:J1").Borders(xlEdgeBottom).LineStyle = xlContinuous
ActiveWindow.DisplayGridlines = False
End Sub

Что изменилось:

  • Убрано лишнее выделение ячеек.
  • Упрощено задание текста.
  • Форматирование применяется напрямую к ячейке.
  • Нет ненужных действий.

Результат: Макрос стал компактнее, понятнее и работает быстрее.

6. Как протестировать оптимизированный макрос

Чтобы проверить работу нового макроса:

  1. Откройте Excel и запустите редактор VBA (Alt + F11).
  2. Вставьте код в модуль.
  3. Вернитесь в Excel.
  4. Нажмите "Разработчик" → "Макросы".
  5. Выберите макрос ВставитьЛист2 и нажмите "Выполнить".

Excel мгновенно создаст новый лист, вставит заголовок и применит нужное форматирование.

7. Итог: что нужно запомнить

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

И главное: даже если программирование на VBA кажется вам сложным — не переживайте. Шаг за шагом, разбираясь в подобных примерах, вы обязательно научитесь писать красивые и эффективные макросы.

"Каждый навык, который вы осваиваете, открывает перед вами новые горизонты возможностей."

Изучение макросов и редактора VBA — это инвестиция в вашу эффективность и профессиональный рост. Умение разбираться в структуре кода, находить избыточные команды и оптимизировать процедуры превращает обычного пользователя Excel в настоящего мастера автоматизации.

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

Не забывайте: каждый макрос — это возможность сделать вашу работу быстрее, проще и эффективнее. Продолжайте учиться, экспериментировать и улучшать свои навыки! Вместе мы сделаем вашу работу с Excel максимально мощной и продуктивной!

👉 Если хотите и дальше разбираться в мире Excel и VBA легко и понятно, подписывайтесь на канал! Впереди ещё много крутых уроков и полезных фишек!