+ Reply to Thread
Results 1 to 5 of 5

Aborting a Sub procedure from a UserForm

Hybrid View

shellshock Aborting a Sub procedure from... 07-31-2005, 12:56 AM
dominicb Good morning shellshock ... 07-31-2005, 03:00 AM
Guest Re: Aborting a Sub procedure... 07-31-2005, 03:05 AM
shellshock Thanks to both of you for... 07-31-2005, 04:11 AM
Guest Re: Aborting a Sub procedure... 08-01-2005, 09:05 AM
  1. #1
    Registered User
    Join Date
    07-05-2005
    Posts
    24

    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.

  2. #2
    Forum Expert dominicb's Avatar
    Join Date
    01-25-2005
    Location
    Lancashire, England
    MS-Off Ver
    MS Office 2000, 2003, 2007 & 2016 365
    Posts
    4,867

    Smile

    Good morning shellshock

    After the uloading (or hiding) the userfrom use this command to abort the procedure:

    Exit Sub

    HTH

    DominicB

  3. #3
    hanjohn@netspace.net.au
    Guest

    Re: 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.


  4. #4
    Registered User
    Join Date
    07-05-2005
    Posts
    24
    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.

  5. #5
    Alex J
    Guest

    Re: 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" <shellshock.1t10yc_1122800713.3104@excelforum-nospam.com> wrote
    in message news:shellshock.1t10yc_1122800713.3104@excelforum-nospam.com...
    >
    > 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 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