Представьте: вы идеально написали код на VBA, запускаете его, и тут — бац! — появляется непонятное окно с ошибкой «Run-time error ’13’». Программа замирает, а вы остаётесь один на один с этим сообщением. Знакомая ситуация?

Так вот, обработка ошибок — это ваш способ сказать программе: «Эй, если что-то пойдёт не так, не паникуй! Скажи мне спокойно, в чём дело, и мы вместе решим проблему».
Как выглядит этот «спасательный круг» в коде VBA?
Вот простейший пример. Допустим, ваш код пытается открыть файл, которого нет:
vba
Sub ОткрытьФайл()
' Включаем "режим спокойствия"
On Error GoTo ОбработчикОшибки
' Пытаемся сделать что-то рискованное
Workbooks.Open "C:\Отчёт_которого_нет.xlsx"
' Если всё хорошо, выходим
Exit Sub
ОбработчикОшибки:
' А если ошибка — спокойно объясняем пользователю
MsgBox "Файл не найден! Проверьте путь и название.", vbExclamation
End SubВидите магию? Теперь вместо грубого «Runtime error 1004» пользователь получает вежливое человеческое объяснение. И программа не «висит» в ожидании — она продолжает работать!
А какие вообще бывают варианты обработки ошибок?
Самый простой — как в примере выше. Но есть и другие полезные подходы.
Например, можно просто проигнорировать ошибку и продолжить выполнение:
vba
Sub ПроигнорироватьОшибку()
On Error Resume Next ' "Продолжай, даже если ошибся"
' Если файла нет — ничего страшного, работаем дальше
Workbooks.Open "C:\Необязательный_файл.xlsx"
' Проверяем, открылся ли файл
If Err.Number <> 0 Then
MsgBox "Не удалось открыть файл, но это не критично"
Err.Clear ' Очищаем ошибку
End If
' Код продолжает выполняться
Call ОсновнаяРабота
End Sub

А можно сделать «умный» код, который пытается разные варианты:
vba
Sub УмноеОткрытие()
On Error GoTo Обработчик
' Пытаемся открыть файл 2025 года
Workbooks("2025_Доходы_расходы.xls").Open
Exit Sub
Обработчик:
' Если не получилось — пробуем файл 2024 года
Workbooks("2024_Доходы_расходы.xls").Open
MsgBox "Работаем с данными прошлого года"
End SubПочему это так важно?
Представьте разницу:
- Без обработчика: программа аварийно закрывается, пользователь в панике
- С обработчиком: программа вежливо сообщает о проблеме и предлагает решение
Обработка ошибок — это как страховка для вашего кода. Вы надеетесь, что она не понадобится, но спокойны, зная, что она есть.
Начните с самого простого — добавьте базовую обработку ошибок в те процедуры, которые работают с файлами или внешними данными. Вы сразу заметите, насколько профессиональнее стал выглядеть ваш код!

И помните: идеальный код — не тот, в котором никогда нет ошибок, а тот, который умеет их грациозно обрабатывать.
P.S. Ранее мы уже разбирали некоторые приёмы улучшения кода VBA — например, как заменить громоздкие операторы If на элегантный Select Case. Если вы пропустили тот разговор — загляните на мой канал, там есть много полезного для тех, кто хочет писать код не только работающий, но и красивый.
А в следующий раз поговорим о том, как заставить VBA общаться с другими программами — это откроет совсем новые горизонты для автоматизации. Обещаю, будет интересно!