returning values from a User Form

R

rohnds

I have user form with three option button so that the user can selec
one of the options.
How can I store the returned value in a variable?


Sub test()
Dim f1, f2, f3 As Boolean
UserForm1.Show
f1 = UserForm1.OptionButton1.Value
f2 = UserForm1.OptionButton2.Value
f3 = UserForm1.OptionButton3.Value
MsgBox f1 & f2 & f3
End Sub


Evertime I run this procedure I always get False, False, False (ie th
value set the properties section of the optionbutton).
I found a way to return the True if I select an option and false when
didn't but setting the ControlSource option of the properties sectio
to cell.
Is there a way I could get True when I select the optionand False whe
I don't wihtout setting the ControlSource to a cell, since then I hav
to have another Sheet that contains only the values from thes
optionsbuttons
 
J

John Green

Sounds like you are UnLoading the userform, or allowing the user to dismiss
it with the close button, instead of using the Hide method to keep it in
memory. This means that control values are lost.

You can disable the Close button (the x in the top right of the form) by
trapping the QueryClose event and cancelling it by setting Cancel = True.
Force the user to use your own OK or Cancel button and use the Hide method
to close the userform.

John Green
 
G

Greg Wilson

Suggested is that you make your variables Public and
declare them in a standard module. Use the UF Terminate
event to format the variable values.

In the UF code module:
Private Sub UserForm_Terminate()
f1 = OptionButton1.Value
f2 = OptionButton2.Value
f3 = OptionButton3.Value
End Sub

In a standard module:
Public f1 As Boolean
Public f2 As Boolean
Public f3 As Boolean

Sub GetOptBtnVals()
UserForm1.Show
MsgBox f1 & vbCr & f2 & vbCr & f3
End Sub

Regards,
Greg
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top