passing values from form to module

C

c1802362

Hello, all.

I have a programming issue I can’t seem to get a handle on.

I have an application that launches a form (“LaunchForm”) that gives
the user a choice of picking either Radio Button A or B. Picking
either radio button assigns a string variable (“textvariable”) with an
appropriate value (StringA or StringB).

When I try to pass textvariable from the form to the application, it
disappears. Any suggestions? Here’s the basic code:


Option Explicit

Sub RunThisApp()

LaunchForm.Show

Range(“A1”).Value = textvariable

.........more code.....

Unload LaunchForm

End Sub

Here’s the code for LaunchForm

Option Explicit
Public textvariable As String ' I added the public statement to
the form since this is the first appearance of textvariable

Private Sub YesButton_Click()

If ButtonA.Value = True Then
textvariable = "StringA"
End If

If ButtonB.Value = True Then
textvariable = "StringB”
End If

LaunchForm.hide

End Sub

Private Sub CancelButton_Click()
Unload LaunchForm
Exit Sub
End Sub


Art
 
J

Jim Cone

Those "public" variables in class modules are really private.
The module behind a user form is a class module.
All or most controls on a user form and the user form have a "Tag" property (its
a string).
You can assign a value to a tag property and then access it anytime before the
form is unloaded...

textVariable = LaunchForm.Controls("Sludge").Tag
'---
Jim Cone
Portland, Oregon USA
http://www.mediafire.com/PrimitiveSoftware
(create Lottery Numbers - in the free folder)




"c1802362" <[email protected]>
wrote in message
Hello, all.

I have a programming issue I can’t seem to get a handle on.

I have an application that launches a form (“LaunchForm”) that gives
the user a choice of picking either Radio Button A or B. Picking
either radio button assigns a string variable (“textvariable”) with an
appropriate value (StringA or StringB).

When I try to pass textvariable from the form to the application, it
disappears. Any suggestions? Here’s the basic code:


Option Explicit

Sub RunThisApp()

LaunchForm.Show

Range(“A1”).Value = textvariable

.........more code.....

Unload LaunchForm

End Sub

Here’s the code for LaunchForm

Option Explicit
Public textvariable As String ' I added the public statement to
the form since this is the first appearance of textvariable

Private Sub YesButton_Click()

If ButtonA.Value = True Then
textvariable = "StringA"
End If

If ButtonB.Value = True Then
textvariable = "StringB”
End If

LaunchForm.hide

End Sub

Private Sub CancelButton_Click()
Unload LaunchForm
Exit Sub
End Sub


Art
 
C

c1802362

Those "public" variables in class modules are really private.
The module behind a user form is a class module.
All or most controls on a user form and the user form have a "Tag" property (its
a string).
You can assign a value to a tag property and then access it anytime before the
form is unloaded...

textVariable = LaunchForm.Controls("Sludge").Tag
'---
Jim Cone
Portland, Oregon USAhttp://www.mediafire.com/PrimitiveSoftware
(create Lottery Numbers - in the free folder)

"c1802362" <[email protected]>
wrote in messageHello, all.

Jim,

made one small modification and it works perfectly.

I changed "LaunchForm.Controls("Sludge").Tag" to
"LaunchForm.Controls.Tag" when I couldn't get any variation of
"Sludge", such as "ButtonA" to work

Art
 
J

Jim Cone

I think you must have left something out of your explanation.

The following two syntax forms work...
LaunchForm.CheckBox1.Tag
LaunchForm.Controls("CheckBox1").Tag

But this fails...
LaunchForm.Controls.Tag
'--
Jim Cone
Portland, Oregon USA
http://www.mediafire.com/PrimitiveSoftware
(Formats & Styles lists or removes unused styles or number formats - in the free
folder)





"c1802362" <[email protected]>
wrote in message

Jim,
made one small modification and it works perfectly.

I changed "LaunchForm.Controls("Sludge").Tag" to
"LaunchForm.Controls.Tag" when I couldn't get any variation of
"Sludge", such as "ButtonA" to work

Art
 
C

c1802362

I think you must have left something out of your explanation.

The following two syntax forms work...
   LaunchForm.CheckBox1.Tag
   LaunchForm.Controls("CheckBox1").Tag

But  this fails...
   LaunchForm.Controls.Tag
'--
Jim Cone
Portland, Oregon USAhttp://www.mediafire.com/PrimitiveSoftware
(Formats & Styles lists or removes unused styles or number formats - in the free
folder)

Jim,

can't explain it, but if I use the
"LaunchForm.Controls("CheckBox1").Tag" syntax it fails to pass the
value from the form to the module, but if I use
"LaunchForm.Controls.Tag" it works....

I'm using VBA from Excel/Powerpoint 2003, but that shouldn't matter

Art
 
G

GS

I'm thinking that if you're trying to read from a variable in a
userform class, you need to ref the class as you would any other class.

As Jim states, declaring a variable 'Public' in a userform keeps it
private to the userform because it dies when the userform is unloaded.
This is the same as what happens when a class terminates. Making the
declaration 'Public', though, does make the variable behave like a
property of the class and so should be handled as such.

You do it right by trying to access it before unloading the userform,
but because VB[A] doesn't know of it (unqualified ref) then you're SOL.
Try...

Range("A1").Value = LaunchForm.textvariable '//fully qualified ref

Alternatively, you could make the vars global by declaring them in a
standard module. This allows access to them from anywhere in your
project.

HTH
 

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