У меня возникли проблемы с обработкой ошибок в VBA excel. Basicaly, у меня есть ситуация, когда я имею дело с несколькими ошибками в одном блоке обработки ошибок.excel vba обработка ошибок
Чтобы сделать вещи действительно просто давайте просто скажем:
Sub some_function()
On Error go to step1
step2:
some code which triggers an error
Exit Sub
step1:
Okay, so far so good.
Problem is, that in this block of code can also occur an error
with the same Err.Number but I have to deal with him on other way
which is not specified in this block of code.
go to step 2
End sub
Я использую SAP сеанса для подключения к SAPgui и я не могу предсказать, произойдет ошибка. Если я могу поймать ошибку в блоке обработки ошибок кода, я могу решить эту ситуацию.
Так что я практически ослеплен. Если возникает ошибка, я пытаюсь выполнить некоторые другие действия, и если она работает нормально, но если во второй раз (в блоке обработки ошибок) возникает ошибка, это вызовет ошибку.
Есть ли проход?
UPDATE:
просто мысли вслух.
Если я использую On Error Resume следующего оператора и выполните следующие действия:
On Error Resume next
some code,
line of code that could trigger an error
if Err.Number <> 0 Then
try to handle an error
Err.Clear
End if
line of code that could also trigger an error
If Err.Number <> 0 Then
Try to handle an error
Err.Clear
End If
Будет ли это хорошо? или есть ли лучшее решение?
Возможно ли использовать следующую инструкцию в процедуре только в определенном блоке кода? Давайте просто скажем, что у нас есть процедура с 20 строками, и я бы хотел использовать оператор Resume Next между 10-й и 15-й строками. Можно ли включить или отключить оператор Resume next или строку Error?
так, как только вы проверите err.Number, почему бы не Err.Clear, чтобы вы могли поймать следующий? – Sorceri
Как правило, не рекомендуется, чтобы ваш блок обработки ошибок потенциально терпел неудачу и должен был поймать ошибку во второй раз. Тем не менее, вы можете использовать 'On Error Resume Next', чтобы следующий оператор подтвердил, что предыдущий преуспел. –