PC Review


Reply
Thread Tools Rating: Thread Rating: 1 votes, 5.00 average.

Scope of 'On Error Resume Next'?

 
 
Matt Jensen
Guest
Posts: n/a
 
      7th Jan 2005
What is the 'scope' of On Error Resume Next?
Is it for a sub, for the next line after the statement only, for a module,
or for a workbook/project?
If more than one of these, how does one specify the different ones?
Thanks
Matt


 
Reply With Quote
 
 
 
 
Sharad Naik
Guest
Posts: n/a
 
      7th Jan 2005
The scope is the for that Sub.
After exiting the sub it is - say - reset.
As to specify different ones within the sub,
you can do On Error GoTo 0

'0' is not a label, it is just used to reset the Resume.

Thus if

On Error Resume Next
'line one of code
'line two of code
On Error GoTo 0

The resume next part will work only for the lines between Resume Next and
GoTo 0, After the GoTo 0 .

You can again use Resume Next "after the GoTo 0" on
any further down lines. (and use again GoTo 0)

Sharad

"Matt Jensen" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> What is the 'scope' of On Error Resume Next?
> Is it for a sub, for the next line after the statement only, for a module,
> or for a workbook/project?
> If more than one of these, how does one specify the different ones?
> Thanks
> Matt
>
>



 
Reply With Quote
 
 
 
 
Bob Phillips
Guest
Posts: n/a
 
      7th Jan 2005
Matt,

Try this code

Sub test()
testa
testb
End Sub

Sub testa()
Dim rng As Range
On Error Resume Next
rng = Range("A1")
End Sub

Sub testb()
Dim rng As Range
rng = Range("A1")
End Sub

What exactly do you mean by the secnd part?

--

HTH

RP
(remove nothere from the email address if mailing direct)


"Matt Jensen" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> What is the 'scope' of On Error Resume Next?
> Is it for a sub, for the next line after the statement only, for a module,
> or for a workbook/project?
> If more than one of these, how does one specify the different ones?
> Thanks
> Matt
>
>



 
Reply With Quote
 
Matt Jensen
Guest
Posts: n/a
 
      7th Jan 2005
Thanks Bob
So it's applicable to a procedure only then.
Cool, that answers the second part then thanks
Matt

"Bob Phillips" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Matt,
>
> Try this code
>
> Sub test()
> testa
> testb
> End Sub
>
> Sub testa()
> Dim rng As Range
> On Error Resume Next
> rng = Range("A1")
> End Sub
>
> Sub testb()
> Dim rng As Range
> rng = Range("A1")
> End Sub
>
> What exactly do you mean by the secnd part?
>
> --
>
> HTH
>
> RP
> (remove nothere from the email address if mailing direct)
>
>
> "Matt Jensen" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
> > What is the 'scope' of On Error Resume Next?
> > Is it for a sub, for the next line after the statement only, for a

module,
> > or for a workbook/project?
> > If more than one of these, how does one specify the different ones?
> > Thanks
> > Matt
> >
> >

>
>



 
Reply With Quote
 
Matt Jensen
Guest
Posts: n/a
 
      7th Jan 2005
Ahh, lovely thanks Sharad
Cheers
Excellent in fact!
Matt

"Sharad Naik" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> The scope is the for that Sub.
> After exiting the sub it is - say - reset.
> As to specify different ones within the sub,
> you can do On Error GoTo 0
>
> '0' is not a label, it is just used to reset the Resume.
>
> Thus if
>
> On Error Resume Next
> 'line one of code
> 'line two of code
> On Error GoTo 0
>
> The resume next part will work only for the lines between Resume Next and
> GoTo 0, After the GoTo 0 .
>
> You can again use Resume Next "after the GoTo 0" on
> any further down lines. (and use again GoTo 0)
>
> Sharad
>
> "Matt Jensen" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
> > What is the 'scope' of On Error Resume Next?
> > Is it for a sub, for the next line after the statement only, for a

module,
> > or for a workbook/project?
> > If more than one of these, how does one specify the different ones?
> > Thanks
> > Matt
> >
> >

>
>



 
Reply With Quote
 
Jake Marx
Guest
Posts: n/a
 
      7th Jan 2005
Hi Matt,

Matt Jensen wrote:
> What is the 'scope' of On Error Resume Next?
> Is it for a sub, for the next line after the statement only, for a
> module, or for a workbook/project?
> If more than one of these, how does one specify the different ones?
> Thanks
> Matt


There is one more thing worth mentioning here. Yes, error handling set in a
routine will be reset when that routine has finished executing. However,
any procedures called *by that routine* that do not have their own error
handling will inherit the error handling of the calling routine. This can
cause unexpected results if you aren't prepared for it.

For example:

Sub Demo()
On Error Resume Next

SubA
SubB

On Error Goto 0
End Sub

Sub SubA()
Dim rng As Range

rng = Range("A1")
End Sub

Sub SubB()
Dim l As Long

l = CLng("ABC")
End Sub


Even though runtime errors are generated by both SubA and SubB, no error
message will be displayed. That is because error handling rolls "uphill" -
since SubA has no error handling, the error is raised back up the call stack
to the Demo subroutine, which then handles the error by Resume Next and
continues on to call SubB. Since SubB has no error handling defined, the
same thing happens when it encounters a runtime error. This behavior
extends all the way through the call stack, so if you have SubA that calls
SubB, which in turn calls SubC, and SubB and SubC have no error handling
defined, the error handler in SubA would catch any errors from SubA, SubB,
or SubC.

Just thought I'd mention this behavior in case you weren't aware of it.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]

 
Reply With Quote
 
Tom Ogilvy
Guest
Posts: n/a
 
      7th Jan 2005
An error handler handles errors in subordinate routine if they don't have
their own error handler. When the error is encounterd, the subordinate
routine exits up to the next routine with an error handler. that is why the
last msgbox in each subordinate routine is not executed:

Sub test()
On Error Resume Next
MsgBox "test Before A err:" & Err.Number
testa
MsgBox "test After A err:" & Err.Number
testb
MsgBox "ending err:" & Err.Number
End Sub

Sub testa()
Dim rng As Range
MsgBox "In TextA Line1 err: " & Err.Number
Err.Raise 5000
MsgBox "In TestA Last Line err:" & Err.Number
End Sub

Sub testb()
Dim rng As Range
MsgBox "In TextB Line1 err: " & Err.Number
Err.Raise 6000
MsgBox "In Testb Last Line err: " & Err.Number
End Sub

--
Regards,
Tom Ogilvy

"Matt Jensen" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> What is the 'scope' of On Error Resume Next?
> Is it for a sub, for the next line after the statement only, for a module,
> or for a workbook/project?
> If more than one of these, how does one specify the different ones?
> Thanks
> Matt
>
>



 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
RE: On error resume next doesn't resume next Klatuu Microsoft Access VBA Modules 0 20th Mar 2008 08:32 PM
Property: ReadOnly on public scope while Read-Write on friend or private scope Saran Microsoft VB .NET 2 19th Jul 2006 11:13 AM
Re: QUERY: 'On Error Resume Next' scope rules Kevin Spencer Microsoft ASP .NET 0 17th Jun 2006 04:33 PM
ON RESUME PASSWORD PROTECT vs ON RESUME DISPLAY WELCOME SCREEN Information Scavenger Windows XP Help 0 29th Sep 2004 09:05 PM
ADSI returning groups in Global scope and Domain local scope instead of Universal scope Maziar Aflatoun Microsoft C# .NET 1 21st Apr 2004 04:08 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 10:34 AM.