Adding controls to a userform at runtime

  • Thread starter AlanGriffithKapitiNZ
  • Start date
A

AlanGriffithKapitiNZ

I would like to generate various controls on a skeleton userform (eg, the
number may vary with the occasion) and have tried
Private Sub UserForm_activate()
Stop
Dim obj As Object
Set obj = Me
Set obj = obj.Add("MSForms.CommandButton.1", "Butt1", True)

but when the form opens I receive the error message
Runtime error '-2147221005(800401f3':
Invalid class string

What am I doing wrong, please?
 
O

OssieMac

Hi Alan,

Note: Space and underscore at the end of a line is a line break in an
otherwise single line of code.

Private Sub UserForm_Activate()

Dim Btn1 As MSForms.Control

On Error Resume Next
Set Btn1 = Me.Controls("Butt1")

If Btn1 Is Nothing Then
Set Btn1 = Me.Controls.Add _
("Forms.CommandButton.1", "Butt1", True)

With Btn1
.Caption = "My button"
.Top = 100
.Left = 100
.Height = 20
.Width = 100
End With
Else
'Insert your code here to handle if button already exists
MsgBox "Cannot Add Butt1. Already exists"
End If


End Sub
 
O

OssieMac

Hi again Alan,

Amendment. Need to cancel the On Error. Insert in code as follows

On Error Resume Next
Set Btn1 = Me.Controls("Butt1")
On Error GoTo 0
 
D

Dave Peterson

I've always had better luck to add all the controls that I'll ever need while in
design mode.

But I'll hide the ones I don't need. Then I can use code to show the ones I
need when I need them.

It makes it easier for the code associated with those controls, too.
 

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