On Error Resume Next
возобновляет выполнение со следующей строки кода, в основном «скрывая» возникновение ошибки, так что у вас не будет шансов на регистрацию.
Вероятно, вам нужно On Error GoTo [Label]
. На этикетке вы можете вызвать процедуру регистрации ошибок. Если ошибки нет, вы пропускаете обработчик ошибок.
Do While condition
On Error GoTo ErrorHandler
' Do Stuff
GoTo NoError
ErrorHandler:
' Log error
NoError:
Loop
Как видите, поток уже немного запутан, как это часто бывает с GoTo
в VBA. Это в основном эквивалент гипотетического Try Catch
, хотя:
Do While condition
Try
' Do Stuff
Catch
' Log error
End Try
Loop
Как и в случае с исключениями, обычно лучше явно проверять условия, которые, по вашему мнению, будут правдоподобными и которые могут вызвать ошибку, и использовать такие обработчик ошибок строит экономно там, где это необходимо.