↪️ On Error Resume Next
При выполнении макросов могут возникать ошибки: деление на ноль, отсутствие файла, неверные данные и т. д. Чтобы программа не прерывалась, можно использовать оператор On Error Resume Next – игнорирование ошибок в VBA.
📌 Пример
🛠 Как это работает?
🔹 Оператор On Error Resume Next включает обработчик ошибок, который игнорирует ошибки после него и позволяет коду продолжать выполнение.
🔹 После прохождения участка кода, где предполагалось игнорировать ошибки, желательно отключить обработку ошибок.
🔹 Оператор On Error GoTo 0 отключает обработчик ошибок и возвращает стандартное поведение VBA при обнаружении ошибок.
👍 Когда использовать?
🔹 Когда ошибка не критична и не должна прерывать выполнение кода.
🔹 При проверке существования файлов, листов, диапазонов.
🔹 В блоках кода, где ошибка не влияет на общий результат.
🚫 Не стоит использовать повсеместно! Это может скрывать важные ошибки, делая код сложным для отладки.
#VBA #ExcelVBA #OnError #ResumeNext #GoTo0 #ОбработкаОшибок
При выполнении макросов могут возникать ошибки: деление на ноль, отсутствие файла, неверные данные и т. д. Чтобы программа не прерывалась, можно использовать оператор 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 (метку), где происходит обработка ошибки.
📌 Пример
❓ Зачем нужен On Error GoTo Label?
🔸 Позволяет перехватывать ошибки и выполнять альтернативные действия.
🔸 Позволяет идентифицировать ошибки для дальнейшего анализа.
🔸 Позволяет безопасно завершить макрос без внезапных остановок.
💡 Важно!
🔹 Если необходимо отключить обработку ошибок On Error GoTo Label внутри кода, используйте оператор On Error GoTo 0.
🔹 Не забывайте ставить Exit Sub перед меткой, чтобы код обработки ошибок не выполнялся в обычном режиме.
🔹 При отладке процедуры оператор On Error GoTo Label лучше закомментировать, чтобы VBA подсвечивал строку кода с ошибкой. 🔦
#VBA #ExcelVBA #OnError #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