Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Qutting VBA code in case of error
Hi All, I have a procedure A which calls a procedure B. Now, in case an happens an error happens in Procedure B I want to exit the whole VBA (I want even the Produre A should stop running). If I simply put On error Exit Sub in Procedure B, the program exists B and comes back to A and runs the other statements in A. In short is there something like Exit Sub which applies to the all the Procedures in code. I tried Application.Quit which closes excel Alltogether (which is not right) Help is appreciated. Thanks a lot Ankur www.xlmacros.com |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
Qutting VBA code in case of error
There is "End", but read the help on this before you use it. I cannot think
of a reason to use it in any code you want remotely reliable. A better way is to make your ProcB a function and check its return value in ProcA: <Return Values Sub ProcA_Return() If ProcB_Return = False Then Exit Sub 'Other code End Sub Function ProcB_Return() As Boolean 'Or Long 'Deal with errors created in code On Error GoTo Handler 'Deal with some incorrect entries If Range("A1").Value < 10 Then ProcB_Return = False Exit Function End If 'Other code 'All OK ProcB_Return = True Exit Function Handler: ProcB_Return = False End Function </Return Values There are also ways of using Err.Raise allowing the unhandled error to bubble up to the calling routine, which deals with it: <Raise Errors Sub ProcA_Errors() 'Error handling in to the "top" Proc On Error GoTo Handler Call ProcB_Errors 'Other code Exit Sub Handler: 'Deal with the error I you can/want MsgBox Err.Source & vbNewLine & Err.Description End Sub Sub ProcB_Errors() 'No error handling here 'Deal with some incorrect entries If Range("A1").Value < 10 Then Err.Raise 10010, "ProcB_Errors", "What is wrong" End If 'Cause an error MsgBox 1 / 0 End Sub </Raise Errors NickHK "ankur" wrote in message oups.com... Hi All, I have a procedure A which calls a procedure B. Now, in case an happens an error happens in Procedure B I want to exit the whole VBA (I want even the Produre A should stop running). If I simply put On error Exit Sub in Procedure B, the program exists B and comes back to A and runs the other statements in A. In short is there something like Exit Sub which applies to the all the Procedures in code. I tried Application.Quit which closes excel Alltogether (which is not right) Help is appreciated. Thanks a lot Ankur www.xlmacros.com |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
Qutting VBA code in case of error
Thanks a lot
Perfect... Regards Ankur On Jan 24, 12:44 pm, "NickHK" wrote: There is "End", but read the help on this before you use it. I cannot think of a reason to use it in any code you want remotely reliable. A better way is to make your ProcB a function and check its return value in ProcA: <Return Values Sub ProcA_Return() If ProcB_Return = False Then Exit Sub 'Other code End Sub Function ProcB_Return() As Boolean 'Or Long 'Deal with errors created in code On Error GoTo Handler 'Deal with some incorrect entries If Range("A1").Value < 10 Then ProcB_Return = False Exit Function End If 'Other code 'All OK ProcB_Return = True Exit Function Handler: ProcB_Return = False End Function </Return Values There are also ways of using Err.Raise allowing the unhandled error to bubble up to the calling routine, which deals with it: <Raise Errors Sub ProcA_Errors() 'Error handling in to the "top" Proc On Error GoTo Handler Call ProcB_Errors 'Other code Exit Sub Handler: 'Deal with the error I you can/want MsgBox Err.Source & vbNewLine & Err.Description End Sub Sub ProcB_Errors() 'No error handling here 'Deal with some incorrect entries If Range("A1").Value < 10 Then Err.Raise 10010, "ProcB_Errors", "What is wrong" End If 'Cause an error MsgBox 1 / 0 End Sub </Raise Errors NickHK "ankur" wrote in ooglegroups.com... Hi All, I have a procedure A which calls a procedure B. Now, in case an happens an error happens in Procedure B I want to exit the whole VBA (I want even the Produre A should stop running). If I simply put On error Exit Sub in Procedure B, the program exists B and comes back to A and runs the other statements in A. In short is there something like Exit Sub which applies to the all the Procedures in code. I tried Application.Quit which closes excel Alltogether (which is not right) Help is appreciated. Thanks a lot Ankur www.xlmacros.com- Hide quoted text -- Show quoted text - |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Case without Select Case error problem | Excel Discussion (Misc queries) | |||
VBA Proper Case Code | Excel Programming | |||
Error in code re case construction | Excel Programming | |||
2 x Case // Error why ? | Excel Programming | |||
Proper case code not working right | Excel Programming |