+ Reply to Thread
Results 1 to 7 of 7

Scope of 'On Error Resume Next'?

Hybrid View

  1. #1
    Matt Jensen
    Guest

    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. #2
    Bob Phillips
    Guest

    Re: 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" <ONLYREPLYTONEWSGROUP@microsoft.com> wrote in message
    news:eRtTXCN9EHA.4028@TK2MSFTNGP15.phx.gbl...
    > 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. #3
    Matt Jensen
    Guest

    Re: 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" <bob.phillips@notheretiscali.co.uk> wrote in message
    news:O2V4DIN9EHA.2568@TK2MSFTNGP11.phx.gbl...
    > 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" <ONLYREPLYTONEWSGROUP@microsoft.com> wrote in message
    > news:eRtTXCN9EHA.4028@TK2MSFTNGP15.phx.gbl...
    > > 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. #4
    Sharad Naik
    Guest

    Re: 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" <ONLYREPLYTONEWSGROUP@microsoft.com> wrote in message
    news:eRtTXCN9EHA.4028@TK2MSFTNGP15.phx.gbl...
    > 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. #5
    Matt Jensen
    Guest

    Re: Scope of 'On Error Resume Next'?

    Ahh, lovely thanks Sharad
    Cheers
    Excellent in fact!
    Matt

    "Sharad Naik" <sharadnaik@nospam-vsnl.net> wrote in message
    news:exZE0JN9EHA.1300@TK2MSFTNGP14.phx.gbl...
    > 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" <ONLYREPLYTONEWSGROUP@microsoft.com> wrote in message
    > news:eRtTXCN9EHA.4028@TK2MSFTNGP15.phx.gbl...
    > > 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. #6
    Jake Marx
    Guest

    Re: 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. #7
    Tom Ogilvy
    Guest

    Re: 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" <ONLYREPLYTONEWSGROUP@microsoft.com> wrote in message
    news:eRtTXCN9EHA.4028@TK2MSFTNGP15.phx.gbl...
    > 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 to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1