UserForms - how to return a value?

M

Marcus Schöneborn

I've seen that one usually runs Me.Hide inside the OK_Click or
Cancel_Click method, but is it somehow possible to specify a return
value the Show method will return, like MsgBox does for example? Also,
is it possible to specify arguments to UserForm.Show so that the form
knows how to initialize itself, without having to make an extra code
module that's just there to show the dialog?

Or is it perhaps possible to have a public "static" function inside a
Dialog module that one can call at any time and that does the creation
of the dialog? I didn't succeed when I tried to define a function there
and call it from outside.
 
B

Bob Phillips

The standard way is to have a public property in the form and test that
afterwards

Dim myForm As UserForm1

If myForm Is Nothing Then Set myForm = New UserForm1
myForm.Show
MsgBox myForm.myProp
Set myForm = Nothing

In the form have a public variable

Public myProp as Boolean

and set it in the form code.

--
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)
 
M

Marcus Schöneborn

»Bob Phillips« said:
The standard way is to have a public property in the form and test that
afterwards

Dim myForm As UserForm1

If myForm Is Nothing Then Set myForm = New UserForm1
myForm.Show
MsgBox myForm.myProp
Set myForm = Nothing

In the form have a public variable

Public myProp as Boolean

and set it in the form code.

That's what I am doing at the moment. I hoped there was another way to
do that... Well, then it's fine. Thanks.
 
B

Bob Phillips

Uhh, isn't that what I said 2 hours 44 minutes earlier, and the OP said was
what he was doing?

--
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)
 
J

Jon Peltier

Bob -

You said public property, but I thought you demonstrated a public variable.

- Jon
 
B

Bob Phillips

In a class, a public variable is a read/write property.

--
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)
 
J

Jon Peltier

Yes, in that sense it is a property. I was thinking more in the sense of the
property Let/Set/Get procedures, which I use a lot because they let you do
more than pass a value. You can use a procedure to set up the display on the
userform, maybe set values for multiple procedures, drive other events.

- Jon
 
B

Bob Phillips

I agree that Get/Let/Set gives you the capability to process the property a
great deal more. I too use them, almost exclusively, but for what the OP
wanted here, a simple read/.write property was sufficient, and let's be
honest, it is never much work to convert them over later if need be.

--
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)
 
J

Jon Peltier

Yeah, I guess we're both right. You can't beat the ease of converting, when
MZ Tools has a command to do just that.

- Jon
 
B

Bob Phillips

Amen to that, indispensable.

--
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)
 

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