Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Aborting a Sub procedure from a UserForm
I have a Sub procedure that invokes a userform. On the userform there are a series of radio buttons and two command buttons, one for OK and one for CANCEL. When the CANCEL button is pressed, I want the userform to either hide or unload itself -- I know how to do this part -- and I want the Sub procedure to abort. How do I do this last part? I can't figure out how to use the CANCEL button as input to the Sub procedure to get it to abort itself. -- shellshock ------------------------------------------------------------------------ shellshock's Profile: http://www.excelforum.com/member.php...o&userid=24935 View this thread: http://www.excelforum.com/showthread...hreadid=391599 |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
Aborting a Sub procedure from a UserForm
I declare a Public Boolean variable in the Declaration section of the
module containing the Sub Procedure eg Public binAbortSub as Boolean. In the Sub make it equal False before showing the UserForm (binAbortSub = False). In the code section of the Cancel button type BinAbortSub = True Unload Userform (Use your UserForm's Name here) In the Sub, straight after the line with UserForm.Show, type If binAbortSub = True then exit Sub End If This works for me but I'm no expert. There might be a better way. |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
Aborting a Sub procedure from a UserForm
Good morning shellshock After the uloading (or hiding) the userfrom use this command to abort the procedu Exit Sub HTH DominicB -- dominicb ------------------------------------------------------------------------ dominicb's Profile: http://www.excelforum.com/member.php...o&userid=18932 View this thread: http://www.excelforum.com/showthread...hreadid=391599 |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
Aborting a Sub procedure from a UserForm
Thanks to both of you for your suggestions. :) In the end, I used an integer testflag very much like the boolean variable as suggested by hanjohn, and I also used the Exit Sub command as suggested by dominicb. I inserted the testflag (designated X) in my userform code, which feeds back to the main procedure as an indicator of whether or not the main procedure should continue. Here's the userform code: Option Explicit Public RCType As Worksheet Public ws As Worksheet 'this is a placeholder Public X As Integer 'this is the testflag Private Sub OptionButton1_Click() 'sample radio button code Set ws = Worksheets("Sheet1") X = 1 End Sub Private Sub OK_Click() Set RCType = ws Hide End Sub Private Sub CANCEL_Click() Unload Me End Sub The procedure that calls the code: Sub main_procedure() UserForm1.Show If UserForm1.X = 1 Then UserForm1.RCType.Activate etc.etc.etc. Else Exit Sub End If End Sub So, when the user selects a radio button, ws is defined, and X=1. Then, when the user presses OK, RCType is equated to ws and the rest of main_procedure runs. If the user presses the OK button without first selecting a radio button, X is still equal to 0, so we Exit Sub. If the user presses CANCEL, the userform is unloaded, which I guess means that X=0, so that again we Exit Sub. -- shellshock ------------------------------------------------------------------------ shellshock's Profile: http://www.excelforum.com/member.php...o&userid=24935 View this thread: http://www.excelforum.com/showthread...hreadid=391599 |
#5
Posted to microsoft.public.excel.programming
|
|||
|
|||
Aborting a Sub procedure from a UserForm
Shell,
Nothing wrong with your solution. The approach I use is to set the Userform.Tag parameter, or one of the OptionButton.Tag paramters during a cancel operation, then check it from the calling sub. AlexJ "shellshock" wrote in message ... Thanks to both of you for your suggestions. :) In the end, I used an integer testflag very much like the boolean variable as suggested by hanjohn, and I also used the Exit Sub command as suggested by dominicb. I inserted the testflag (designated X) in my userform code, which feeds back to the main procedure as an indicator of whether or not the main procedure should continue. Here's the userform code: Option Explicit Public RCType As Worksheet Public ws As Worksheet 'this is a placeholder Public X As Integer 'this is the testflag Private Sub OptionButton1_Click() 'sample radio button code Set ws = Worksheets("Sheet1") X = 1 End Sub Private Sub OK_Click() Set RCType = ws Hide End Sub Private Sub CANCEL_Click() Unload Me End Sub The procedure that calls the code: Sub main_procedure() UserForm1.Show If UserForm1.X = 1 Then UserForm1.RCType.Activate etc.etc.etc. Else Exit Sub End If End Sub So, when the user selects a radio button, ws is defined, and X=1. Then, when the user presses OK, RCType is equated to ws and the rest of main_procedure runs. If the user presses the OK button without first selecting a radio button, X is still equal to 0, so we Exit Sub. If the user presses CANCEL, the userform is unloaded, which I guess means that X=0, so that again we Exit Sub. -- shellshock ------------------------------------------------------------------------ shellshock's Profile: http://www.excelforum.com/member.php...o&userid=24935 View this thread: http://www.excelforum.com/showthread...hreadid=391599 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
userform output to procedure | Excel Programming | |||
Looping procedure calls userform; how to exit loop (via userform button)? | Excel Programming | |||
Quit UserForm and Procedure | Excel Programming | |||
VBA question - calling Procedure from userform | Excel Programming | |||
Passing Userform as an argument to a procedure | Excel Programming |