programatically inserting a control within a frame

W

Wes

I'm creating a section of a userform on the fly. I can create a frame using
the code:

Set MyControl = Controls.Add("Forms.Frame.1")
With MyControl
.width = 200
.height = 400
.top = 160
.left = 2
.zorder (1)
end with

now I want to create a textbox and a label within this frame (actually a
bunch of them). Anytime a create the textboxes or labels, it goes behind the
frame. I used zorder(0) on the textbox. I also switched the zorder of the
frame and textbox. (Not sure if this would have had anything to do with it
anyhow.)

Thanks in advance for your help
 
A

Andy Pope

Hi,

You need to add the controls to the frame rather than the userform.

Dim MyControl As MSForms.Frame
Dim MyLabel As MSForms.Label

Set MyControl = Controls.Add("Forms.Frame.1")
With MyControl
.Width = 200
.Height = 400
.Top = 160
.Left = 2
.ZOrder (1)
.Visible = True
End With

Set MyLabel = MyControl.Controls.Add("Forms.Label.1")
With MyLabel
.Width = 100
.Height = 40
.Top = 10
.Left = 2
.Caption = "Hello World"
.Visible = True
End With

Cheers
Andy
 
P

Peter T

By default new controls are added to the form. If you want them added to
some other container, eg a frame or multipage, you need to qualify.

Set myControl2 = Me.Frame1.Controls.Add(etc 'if Frame1 was added at design
time
or
Set myControl2 = Me.Controls("Frame1").Controls.Add(etc

or in your case you could do
Set myControl2 = MyControl.Add(etc

or even

With MyControl
.Left = 2
.Controls.add(Forms.Textbox.1") ' note the preceding dot
.BackColor = 255
End With
End with

Regards,
Peter T
 

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