1
votes

I'm having trouble with an error handling in VBA excel. Basicaly, I have a situation where I'm dealing with multiple errors within same error handling block.

To make things really simple let's just say:

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

I'm using SAP session to connect to SAPgui and I cannot predict which error will occur. If I can catch an error within error handling block of code I can solve this situation.

So basicaly I'm blind foilded. If an error occurs I try to do some other things and if it works OK, but if an error occurs second time (within error handling block) it will throw me an error.

Is there any walkaround?

UPDATE:

just thinking out loud.

If I use On Error Resume next statement and do as following:

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

Would that be OK? or is there any better solution?

Is it possible to use Resume next statement within the procedure in only a certain block of code? Let's just say we have a procedure with 20 lines, and I would like to use Resume Next statement between 10th and 15th line.. Is it possible to enable and disable Resume next statement, or on Error line?

1
so once you verify the err.Number why not Err.Clear so you can catch the next one? - Sorceri
It's usually not a good idea to have your error-handling block to potentially fail and have to catch an error the second time. However, you can use On Error Resume Next to have the following statement check that the previous one has succeeded. - Code Different

1 Answers

0
votes

How about putting the code in step 2 into a separate procedure? There, you can do separate error handling with a new on error goto statement.