Add code on the fly to existing userforms

P

pan65

I know I can create a new userform with new controls and new code for the
controls on the fly using VB. I have also added controls to an existing
userform but I am having trouble adding code for the controls. The name of
my userform is frmGSN and Code is a string of code. I am trying the
following code but it doesn't recognize the .CodeModule

With frmGSN.CodeModule
.InsertLines .CountOfLines + 1, Code
End With

Please help. Thanks
 
B

Bob Phillips

Here is an example

Sub MakeForm()
Dim TempForm As Object
Dim FormName As String
Dim NewButton As Msforms.CommandButton
Dim TextLocation As Long
'
' Create the UserForm
Set TempForm = ThisWorkbook.VBProject. _
VBComponents.Add(3) 'vbext_ct_MSForm
FormName = TempForm.Name
With TempForm
.Properties("Caption") = "Temporary Form"
.Properties("Width") = 200
.Properties("Height") = 100
End With
'
' Add a CommandButton
Set NewButton = TempForm.Designer.Controls _
.Add("forms.CommandButton.1")
With NewButton
.Caption = "Click Me"
.Left = 60
.Top = 40
End With
'
' Add an event-hander sub for the CommandButton
With TempForm.CodeModule
TextLocation = .CreateEventProc("Click", "CommandButton1")
.InsertLines TextLocation + 1, "MsgBox ""Hello!"""
.InsertLines TextLocation + 2, "Unload Me"
End With
'
' Show the form
VBA.UserForms.Add(FormName).Show
'
' Delete the form
ThisWorkbook.VBProject.VBComponents.Remove VBComponent:=TempForm
End Sub



--
---
HTH

Bob


(there's no email, no snail mail, but somewhere should be gmail in my addy)
 
D

Dave Peterson

Another option would be to create the userform with those controls on it--and
the code behind those controls, too.

Then just hide/show the controls you want hidden/shown.
 
P

pan65

I am gathering from your response and from Bob's response, that I just need
to start with a new userform.

Thanks for the help, it is much appreciated.
 
D

Dave Peterson

Bob created a new userform, but you could use an existing one.

I suggested that you create the extra controls while you're still designing the
form--not at run time.
 
B

Bob Phillips

You said you were creating a new userform, I just gave some code that
included that creation as well as the controls and the code.

--
---
HTH

Bob


(there's no email, no snail mail, but somewhere should be gmail in my addy)
 
B

Bob Phillips

This seems explicit to me ...

I know I can create a new userform with new controls and new code for the
controls on the fly using VB.

--
---
HTH

Bob


(there's no email, no snail mail, but somewhere should be gmail in my addy)
 
D

Dave Peterson

But it's out of context.

Add in the subject and the last couple of sentences and it looks like the OP,
well, you know what I think <bg>.
 

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