Vba: как выйти из sub при ошибке
Вы можете использовать оператор Exit Sub в VBA для выхода из подпроцедуры при возникновении ошибки.
Вот распространенный способ использования этого утверждения на практике:
Sub DivideValues()
Dim i As Integer
On Error GoTo ErrorMessage
For i = 1 To 10
Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
Exit Sub
Error Message:
MsgBox “ An Error Occurred ”
Exit Sub
End Sub
Этот конкретный макрос пытается разделить каждое значение в диапазоне A1:A10 на соответствующее значение в диапазоне B1:B10 .
Если возникает ошибка (например, мы пытаемся разделить на ноль), то оператор On Error GoTo сообщает VBA о доступе к ErrorMessage , который указывает создать окно сообщения, сообщающее пользователю о том, что произошла ошибка, и завершить подпроцедуру с помощью Exist Sub . . заявление.заявление.
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: как создать подпрограмму в случае ошибки в VBA
Предположим, у нас есть следующий список значений в столбцах A и B:
Теперь предположим, что мы создаем следующий макрос, чтобы разделить каждое значение в столбце A на соответствующее значение в столбце B и отобразить результаты в столбце C:
Sub DivideValues()
Dim i As Integer
For i = 1 To 10
Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
End Sub
Когда мы запускаем этот макрос, мы получаем следующую ошибку:
Мы получаем эту ошибку, потому что в четвертой строке листа Excel мы пытались разделить на ноль.
Если мы просто хотим выйти из подпроцедуры при возникновении этой ошибки, мы можем использовать оператор Exit Sub следующим образом:
Sub DivideValues()
Dim i As Integer
On Error GoTo ErrorMessage
For i = 1 To 10
Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
Exit Sub
Error Message:
MsgBox “ An Error Occurred ”
Exit Sub
End Sub
Когда мы запускаем этот макрос, подпроцедура выполняет все возможные проблемы деления, прежде чем обнаруживает ошибку, затем появляется окно сообщения, сообщающее нам, что произошла ошибка и VBA просто существует в подпроцедуре:
Примечание . Полную документацию по оператору Exit в VBA можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
Как создавать папки с помощью VBA
Как удалить папки с помощью VBA
Как удалить файлы с помощью VBA