Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 113
Default Scope of 'On Error Resume Next'?

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


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 212
Default Scope of 'On Error Resume Next'?

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" wrote in message
...
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




  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,272
Default Scope of 'On Error Resume Next'?

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" wrote in message
...
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




  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 113
Default Scope of 'On Error Resume Next'?

Thanks Bob
So it's applicable to a procedure only then.
Cool, that answers the second part then thanks
Matt

"Bob Phillips" wrote in message
...
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" wrote in message
...
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






  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 113
Default Scope of 'On Error Resume Next'?

Ahh, lovely thanks Sharad
Cheers
Excellent in fact!
Matt

"Sharad Naik" wrote in message
...
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" wrote in message
...
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








  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 860
Default Scope of 'On Error Resume Next'?

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]

  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Scope of 'On Error Resume Next'?

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" wrote in message
...
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
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
On Error Resume Next Jim Sharrock Excel Programming 2 May 13th 04 03:12 PM
On error resume next statement ignored! J S Excel Programming 2 January 30th 04 10:58 PM
ON ERROR RESUME NEXT D.S.[_3_] Excel Programming 7 December 1st 03 09:40 AM
On Error Resume Next D.S.[_3_] Excel Programming 1 November 28th 03 04:52 PM
On Error Resume Next Mike[_58_] Excel Programming 3 November 23rd 03 05:09 PM


All times are GMT +1. The time now is 03:44 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"