ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Qutting VBA code in case of error (https://www.excelbanter.com/excel-programming/381804-qutting-vba-code-case-error.html)

ankur

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


NickHK

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




ankur

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 -




All times are GMT +1. The time now is 05:09 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com