Учебник Автоматизация Excel на VBA для начинающих
Как перестать делать одно и то же руками: макросы и VBA для тех, кто живёт в Excel — без программистского прошлого.
Курс «Автоматизация Excel на VBA» состоит из 5 разделов и 15 уроков: Первые макросы, Язык VBA, Ячейки, диапазоны, листы, Практические задачи и Надёжность и удобство. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Первые макросы
- Зачем макросы и что такое VBA
Что такое макрос и язык VBA простыми словами, как посчитать окупаемость автоматизации и какую рутину в Excel автоматизировать стоит, а какую — нет.
- Запись макроса и чтение кода
Как записать макрос мышкой в Excel, открыть и прочитать полученный код VBA, почему рекордер пишет Select и Activate и как переписать такой код по-человечески.
- Редактор VBA и безопасность макросов
Редактор VBA по Alt+F11: окно проекта, модули, Immediate и Option Explicit. Формат .xlsm, настройки безопасности макросов и почему файлы из интернета опасны.
- Зачем макросы и что такое VBA
2 Язык VBA
- Переменные и типы
Переменные в VBA: Dim и типы Long, String, Double, Boolean, Range, Variant. Зачем нужен Option Explicit, что такое Set и область видимости переменных.
- Условия и циклы
Условия и циклы в VBA: If, ElseIf, Select Case, циклы For, For Each, Do While, досрочный выход и главный приём — обход строк таблицы через End(xlUp).
- Процедуры Sub и функции Function
Sub и Function в VBA: чем отличаются, как передавать параметры (ByVal и ByRef), как вернуть значение, что такое UDF и как разбить макрос-простыню на понятные куски.
- Переменные и типы
3 Ячейки, диапазоны, листы
- Range и Cells: работа с ячейками
Как в VBA обращаться к ячейкам Excel: Range и Cells, смещение Offset и Resize, чтение и запись значений, разница между Value, Text и Formula.
- Как писать без Select и Activate
Почему записанный макрос с Select работает медленно и ненадёжно и как переписать его на прямые ссылки на объекты: было/стало, замер скорости, типичные ошибки.
- Листы и книги
Worksheets, ActiveSheet, ThisWorkbook и ActiveWorkbook в VBA: как надёжно обратиться к нужному листу и книге и как найти последнюю заполненную строку через End(xlUp).
- Range и Cells: работа с ячейками
4 Практические задачи
- Сборка отчёта из нескольких листов
Макрос VBA обходит все листы книги, собирает данные в один сводный лист и проставляет итоги. Полный код с разбором: End(xlUp), Resize, Formula, ScreenUpdating.
- Поиск, фильтрация и обработка данных
Range.Find и FindNext, AutoFilter и выгрузка видимых строк, RemoveDuplicates, условное форматирование из кода — типовые операции VBA с готовыми примерами.
- Пользовательские функции (UDF)
Как написать свою функцию для формул Excel на VBA: синтаксис Function, Optional-аргументы, CVErr, ограничения UDF и когда вместо неё нужен макрос.
- Сборка отчёта из нескольких листов
5 Надёжность и удобство
- Обработка ошибок
On Error GoTo и рабочий шаблон обработчика в VBA, почему On Error Resume Next опасен, понятные сообщения пользователю и проверка входных данных.
- Скорость: почему макрос тормозит
Почему макрос VBA работает минуты: ScreenUpdating, Calculation = xlManual, чтение диапазона в массив вместо цикла по ячейкам и замер времени через Timer.
- Кнопки, формы и запуск макроса
Кнопка на листе и назначение макроса, UserForm для ввода параметров, события листа Worksheet_Change и обязательный EnableEvents = False.
- Обработка ошибок