Что произойдет, если ошибка произошла внутри второго. Будет ли он возобновляться дальше?Об ошибке Область VBA
Sub One()
On Error Resume Next
call Two
end sub
Спасибо!
Что произойдет, если ошибка произошла внутри второго. Будет ли он возобновляться дальше?Об ошибке Область VBA
Sub One()
On Error Resume Next
call Two
end sub
Спасибо!
Вы - это близко, чтобы разобраться в этом самостоятельно - отвечая здесь для потомков.
Вставьте этот код в ThisWorkbook
(предполагая, что Excel VBA), и вызвать TestResumeNext
из непосредственной панели:
Public Sub TestResumeNext()
On Error Resume Next
Boom
MsgBox "Stack " & Err.Description
End Sub
Private Sub Boom()
Err.Raise 6
End Sub
Вы увидите окно сообщения с "Stack Overflow".
Теперь закомментируйте заявление On Error
и повторите это: вы получите ошибку времени выполнения.
Я бы добавил, что это верно, только если 'Sub Boom' не имеет собственного обработчика ошибок. Если у него есть собственный обработчик, он может обрабатываться локально. – RubberDuck
@ RubberDuck правильный. Если обработчик ошибок в «Sub Boom» не вызывает другую ошибку. –
Добавить 'Sub Two(): i = 1/0: End Sub' и посмотреть. –
Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что на него можно легко ответить методом проб и ошибок. –
Я не согласен с закрытием вопросов только потому, что ответ может быть найден путем проб и ошибок. Может быть, для студента, написавшего 100 подобных кодов, это правда, но у меня нет времени писать небольшой тестовый код для каждого вопроса, который появляется. Кроме того, комментарий или ответ часто содержат информацию, касающуюся темы, о которой я даже не думал спрашивать (пока). – riderBill