Подробно разбираем обработку ошибок в VBA: почему нет Catch, как использовать On Error, шаблоны и реальные примеры. Вы написали макрос, всё выглядит правильно, нажимаете запуск — и Excel вываливает ошибку. Первая реакция: «Сейчас просто добавлю Catch, как в других языках, и всё будет нормально». Но VBA на это смотрит спокойно и говорит: «Нет». И вот здесь начинается путаница, из-за которой многие либо игнорируют ошибки, либо пишут нестабильный код. Разберёмся, как это работает на самом деле. В языках вроде C#, Java или Python есть привычная конструкция: try → catch → finally Она позволяет:
— обернуть код
— перехватить ошибку
— обработать её В VBA этого механизма нет. Если написать: Catch: это просто метка, но без правильной логики перехода она ничего не делает. Всё управление ошибками в VBA построено вокруг одной конструкции: On Error Есть три варианта: — On Error GoTo
— On Error Resume Next
— On Error GoTo 0 И именно они определяют поведение макроса. Вот шаблон, который нужно запомнит