VBA Excel
241 subscribers
88 photos
23 links
VBA Excel для начинающих. Справка по VBA Excel. Visual Basic for Applications. Справочник. Самоучитель.
Download Telegram
↪️ On Error Resume Next

При выполнении макросов могут возникать ошибки: деление на ноль, отсутствие файла, неверные данные и т. д. Чтобы программа не прерывалась, можно использовать оператор On Error Resume Next – игнорирование ошибок в VBA.

📌 Пример
' Включаем игнорирование ошибок
On Error Resume Next
' Отключаем оповещения
Application.DisplayAlerts = False
Sheets("Оглавление").Delete
' Включаем оповещения
Application.DisplayAlerts = True
' Отключаем игнорирование ошибок
On Error GoTo 0


🛠 Как это работает?
🔹 Оператор On Error Resume Next включает обработчик ошибок, который игнорирует ошибки после него и позволяет коду продолжать выполнение.
🔹 После прохождения участка кода, где предполагалось игнорировать ошибки, желательно отключить обработку ошибок.
🔹 Оператор On Error GoTo 0 отключает обработчик ошибок и возвращает стандартное поведение VBA при обнаружении ошибок.

👍 Когда использовать?
🔹 Когда ошибка не критична и не должна прерывать выполнение кода.
🔹 При проверке существования файлов, листов, диапазонов.
🔹 В блоках кода, где ошибка не влияет на общий результат.

🚫 Не стоит использовать повсеместно! Это может скрывать важные ошибки, делая код сложным для отладки.

#VBA #ExcelVBA #OnError #ResumeNext #GoTo0 #ОбработкаОшибок
👍2🔥2
↩️ On Error GoTo Label

В отличие от On Error Resume Next, который игнорирует ошибки, оператор On Error GoTo Label позволяет перенаправить выполнение кода в специальный блок для обработки ошибок.

🛠 Как это работает?
При возникновении ошибки после оператора On Error GoTo Label выполнение кода переключается на указанный Label (метку), где происходит обработка ошибки.

📌 Пример
Sub Primer()
On Error GoTo ErrorHandler ' Переключаем обработку ошибок на метку ErrorHandler

Dim x As Double
x = 10 / 0 ' Ошибка: деление на ноль (division by zero)
MsgBox "Результат: " & x

Exit Sub ' Выход из процедуры, чтобы не выполнить код обработки ошибки

ErrorHandler: ' Метка для обработки ошибок
MsgBox "Ошибка №" & Err.Number & ": " & Err.Description, vbCritical, "Ошибка"
End Sub


Зачем нужен On Error GoTo Label?
🔸 Позволяет перехватывать ошибки и выполнять альтернативные действия.
🔸 Позволяет идентифицировать ошибки для дальнейшего анализа.
🔸 Позволяет безопасно завершить макрос без внезапных остановок.

💡 Важно!
🔹 Если необходимо отключить обработку ошибок On Error GoTo Label внутри кода, используйте оператор On Error GoTo 0.
🔹 Не забывайте ставить Exit Sub перед меткой, чтобы код обработки ошибок не выполнялся в обычном режиме.
🔹 При отладке процедуры оператор On Error GoTo Label лучше закомментировать, чтобы VBA подсвечивал строку кода с ошибкой. 🔦

#VBA #ExcelVBA #OnError #GoTo #Label #ОбработкаОшибок
🔥2