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 OccurredExit 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 OccurredExit Sub
    
End Sub

Когда мы запускаем этот макрос, подпроцедура выполняет все возможные проблемы деления, прежде чем обнаруживает ошибку, затем появляется окно сообщения, сообщающее нам, что произошла ошибка и VBA просто существует в подпроцедуре:

VBA при ошибке вывода под

Примечание . Полную документацию по оператору Exit в VBA можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:

Как создавать папки с помощью VBA
Как удалить папки с помощью VBA
Как удалить файлы с помощью VBA

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *