View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
NickHK NickHK is offline
external usenet poster
 
Posts: 4,391
Default Solution to Stopping Program Execution

One way is to use Functions instead of subs, then check check the return
value:

Private Sub CommandButton1_Click()
If Routine1 = False Then
Exit Sub
Else
Call Routine2
End If
End Sub

Private Function Routine1() As Boolean
Routine1 = (Rnd() 0.5)
End Function

Private Function Routine2() As Boolean
Routine2 = (Rnd() 0.5)
End Function

You can also use erorr handling with Err.Raise, as VBA errors "bubble up"

Private Sub CommandButton1_Click()
'Initialte an error handler
On Error GoTo Handler

Call Routine1

Exit Sub
Handler:
Debug.Print Err.Number, Err.Description
End Sub

Private Function Routine1() As Boolean
'No error handler here
Call Routine2
End Function

Private Function Routine2() As Boolean
Dim i As Long
'No error handler here
'Some code that causes an error
i = 1 / 0
End Function

NickHK

"ALATL" wrote in message
...
Hi Nick.... I read the *consequences*....heh..... and tried using Stop
instead. I had the same result as before. The user form unloads but code

in
all the following subs continues to execute.

I'm open to any more ideas.

Best,
ALATL

"NickHK" wrote:

You are aware of the consequences of using End ?
If not, read the help.

NickHK

"ALATL" wrote in message
...
This one was pretty simple, once I found it. :-P

If Ans = vbCancel Then End --Instead of Exit Sub
End If

"Exit Sub immediately exits the Sub procedure in which it appears.

Execution
continues with the statement following the statement that called the

Sub
procedure."

..... which is why my application continued to execute & bug out.

Best,
ALATL




"ALATL" wrote:

I would like for the application to stop processing if the user

selects
vbCancel. Right now, the application does not exit & continues to

bug
out
since the Sub stops processing. Thanks for any feedback!

Dim Ans As String

Ans = MsgBox("Data columns must occur in the following order: " &

vbNewLine
& vbNewLine & _

"User Name (A)" & vbNewLine & _
"Set of Books (B)" & vbNewLine & _

"Click OK to continue. Click Cancel to correct data.", vbOKCancel +
vbQuestion, "Confirm Column Order")

If Ans = vbCancel Then Exit Sub