programatically inserting a control within a frame

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

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
 
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
 
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
 
Back
Top