Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1452to1456
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

UserForm Code per Makro erstellen

UserForm Code per Makro erstellen
30.10.2015 14:25:02
newirobi
Hallo zusammen,
ich schreibe derzeit ein Makro mit dem ich in einem anderen Workbook eine UserForm mit _ ComboBoxen erstelle. Das läuft soweit auch ganz gut.

'Create a UserForm
Set frmUserform = Workbooks(fileName).VBProject.VBComponents.Add(vbext_ct_MSForm)
With frmUserform
.Properties("Left") = 50
.Properties("Top") = 50
.Properties("Height") = 370
.Properties("Width") = 570
.Properties("Caption") = "Enter New Module"
.Name = "frmMyUserForm"
'.Properties ("Show")
End With
With frmMyUserForm
For i = 1 To productRange.Count
Call AddComboBox(i, frmUserform, productRange, fileName, DATABASE)
Next
End With

Sub AddComboBox(myI As Long, frmUF As VBComponent, prodRange As Object, wbName As String,  _
wsName As String)
Dim myFrame As Frame
Dim myComboBox As ComboBox
Dim i As Long
Dim L As Long
Dim T As Long
Dim H As Long
Dim W As Long
Dim ar As Variant
L = 10
W = 120
H = 15
T = (myI - 1) * H + 5
Set myFrame = frmUF.Designer.Controls.Add("Forms.Frame.1", "fraParameter" & CStr(myI), True) _
With myFrame
.Caption = prodRange.Cells(myI).Value
.Left = L
.Top = T * 2
.Height = H * 2
.Width = W + 10
.BorderColor = RGB(255, 255, 255)
.TabIndex = myI - 1
Set myComboBox = myFrame.Controls.Add("Forms.ComboBox.1", "cboParameter" & CStr(myI),  _
True)
With myComboBox
.Clear
.Left = 5
.Top = 6
.Height = H
.Width = W
.TabIndex = 0
.Visible = True
End With
End With
End Sub

Nun will ich einen Schritt weiter gehen und auch den UserForm-Code per Makro erstellen. Hier hab ich jedoch noch keinen wirklichen Ansatz gefunden. Ich habe zwar schon ein Modul erstellt zum Aufrufen des UserForms...

'create a VBA project in the opened file
Set VBComp = Workbooks(fileName).VBProject.VBComponents.Add(vbext_ct_StdModule)
VBComp.Name = MAKRO_NAME
Application.Visible = True
'fill with code
With VBComp.CodeModule
.InsertLines 1, "Sub " & MAKRO_NAME & "()"
.InsertLines 2, "     frmMyUserForm.show"
.InsertLines 3, "End Sub"
End With
Set VBComp = Nothing

...aber weiß jetzt nicht wie ich den "UserForm_Activate()" per Makro erstellt bekomme.
Kann mir einer sagen wie bzw. ob das möglich ist?
Danke!

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm Code per Makro erstellen
30.10.2015 14:54:29
Daniel
Hi
du findest hier ein tutorial zum Thema "Code per Code erstellen"
http://www.office-loesung.de/viewforum13_0_150.php
wobei ich das bei "Basiskenntnissen VBA" für gewagt halte.
Einfacher wäre es wahrscheinlich, du hast eine Vorlagendatei, in welcher die Userform schon vollständig vorhanden ist und kopierst dir dann die Inhalte der anderen Datei in diese Vorlage.
andere Möglichkeit:
du exportierst die vollständige Userform
(im VBA-Editor im Projektplorer über das Kontextmenü) und importierst dann in die neue Datei über den gleichen Weg die Userform.
das lässt sich sicherlich auch programmieren.
Gruß Daniel

Anzeige
AW: UserForm Code per Makro erstellen
30.10.2015 15:00:04
newirobi
Danke für die Hilfe.
Das Problem mit einer Vorlage ist nur, dass ich die UserForm dynamisch aufbauen will/muss. Das heißt ich bekomme eine Exceldatei mit x Parametern. Je nachdem wie viele Parameter in der Datei ausgewertet werden sollen, muss ich ComboBoxen mit zughörigen Elementen füllen.
Ich hoffe mein Problem ist so etwas klarer?!

AW: UserForm Code per Makro erstellen
30.10.2015 15:43:09
newirobi
Ich habe noch etwas weiter rumprobiert und es schließlich selbst lösen können.
Der Vollständigkeit halber, falls jemand auch an dieser Stelle hängt, hier die Lösung:
Ich hatte mir ja bereits mit der Funktion

Set myFrame = frmUF.Designer.Controls.Add("Forms.Frame.1", "fraParameter" & CStr(myI), True)

eine UserForm per Code erstellt.
Sobald diese da ist kann man einfach mit folgenden Befehl den entsprechenden Code dahinter hängen:

With frmUF.CodeModule
lineCount = .CountOfLines
.InsertLines lineCount + 1, "   "
.InsertLines lineCount + 2, "Parameter" & CStr(myI)
.InsertLines lineCount + 3, "   "
End With
Vielleicht hab ich meine Frage etwas komisch ausgedrückt aber letztendlich habe ich genau das gesucht!
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige