Error not trapped - please help!!!

  • Thread starter Thread starter Bura Tino
  • Start date Start date
B

Bura Tino

Hi,

I'm going nuts trying to solve the following problem. If I execute the
following code when the active sheet has no named ranges, the first error is
trapped successfully, but the second one does not get trapped and the
execution breaks!

Sub MySub()
Dim r as Range
Dim isA as Boolean
Dim isB as Boolean

isA = False
isB = False

TryA:
On Error GoTo TryB
Set r = ActiveSheet.Range("AAA")
isA= True
GoTo Proceed

TryB:
On Error GoTo Proceed
Set r = ActiveSheet.Range("BBB")
isB = True
GoTo Proceed

Proceed:
If isAThen
doAStuff
ElseIf isB Then
doBStuff
End If
End Sub

Perhaps it's invalid to have 2 "On Error" statements? In any case, I will
really appreciate your help!

Bura
 
Bura,

An alternative approach

Sub MySub()
Dim r As Range
Dim isA As Boolean
Dim isB As Boolean

isA = False
isB = False

On Error Resume Next
Set r = ActiveSheet.Range("AAA")
isA = Not r Is Nothing

Set r = ActiveSheet.Range("BBB")
isB = Not r Is Nothing

On Error GoTo 0

If isA Then
doAStuff
ElseIf isB Then
doBStuff
End If
End Sub

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)
 
You can't have two On Error Goto statements in one routine.

Sure you can. You can have as many On Error Goto statements as
you want. It may not be the best way to write the code, but it is
certainly legal.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com
 
You can actually lose the lines

isA = False
isB = False

because the line

IsA = NOt r Is Nothing will set it to True or False, no need to
initialise
--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)
 
The reason the second error is not getting trapped is because the firs
error is still in affect. So when the program gets to the second erro
trap the program is still in an error condition so it executes the got
statement.

Try it this way:

Sub MySub()
Dim r as Range
Dim isA as Boolean
Dim isB as Boolean

isA = False
isB = False

TryA:
On Error GoTo TryB
Set r = ActiveSheet.Range("AAA")
isA= True
GoTo Proceed

TryB:
On Error GoTo 0 'This should clear the previous error.
On Error GoTo Proceed
Set r = ActiveSheet.Range("BBB")
isB = True
GoTo Proceed

Proceed:
If isAThen
doAStuff
ElseIf isB Then
doBStuff
End If
End Sub
 
You should have tried this, you would have seen that it doesn't work.

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top