control the Visible Property on sections of a UserForm with a macro

R

RJQMAN

I have userforms, each with 8 pairs of radio buttons (Yes-No
options). In many cases, the user will not need all eight sets -
perhaps only six of the eight apply, for example. Therefore I would
like to hide different pairs of the radio buttons, depending on input
from the user before the userform is loaded.

Each pair of buttons is inside of a frame, and the title for the
buttons is a text box that draws the title from other entries made by
the user.

Can I make the frame invisible and thereby everything inside of the
frame as well? That would be ideal, but I have no idea how to
structure a macro to change the property of the frame (or to change
the properties of the textbox and/or radio buttons).

For example, if I want to hide the two radio buttons and text box
inside of frame 7, depending on an integer that was selected in an
earlier part of the program, the concept would be;

If Integer1=1 then UserForm4, Frame 7 visible = false
If Integer1=2 then userform4.frame7.visible=true.

Is there a way to do this? Thanks for the assistance. I am lost here.
 
P

Peter T

Your code is almost right. You didn't say where Integer1 is, what changes
its value, and when it should toggle visibility of the frame.

Lets say Integer1 is a public in a normal module and set before the form
loads

Private Sub UserForm_Initialize()
Me.Frame7.Visible = (Integer1 = 2)
End Sub


or maybe you might want to control it from as you load the form

Sub test()
Dim Integer1 As Long

Integer1 = 0
' form loads into memory 1st time it's referenced
UserForm1.Frame7.Visible = (Integer1 = 2)
UserForm1.Show

End Sub

Personally, rather than Integer1 = 1 or 2, why not 0 or 1. Perhaps a Boolean
flag
bOptions7 = True/False

Regards,
Peter T
 
R

RJQMAN

Your code is almost right. You didn't say where Integer1 is, what changes
its value, and when it should toggle visibility of the frame.

Lets say Integer1 is a public in a normal module and set before the form
loads

Private Sub UserForm_Initialize()
    Me.Frame7.Visible = (Integer1 = 2)
End Sub

or maybe you might want to control it from as you load the form

Sub test()
Dim Integer1 As Long




Integer1 = 0
' form loads into memory 1st time it's referenced
UserForm1.Frame7.Visible = (Integer1 = 2)
UserForm1.Show

End Sub

Personally, rather than Integer1 = 1 or 2, why not 0 or 1. Perhaps a Boolean
flag
bOptions7 = True/False

Regards,
Peter T











- Show quoted text -


Wow. That works very well. Thank you for your help. I greatly
appreciate it. Have a wonderful day.
 

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