Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1356to1360
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 ComboBox zur Laufzeit Items unsichtbar

UserForm ComboBox zur Laufzeit Items unsichtbar
05.05.2014 16:06:00
Paul
Hallo, habe folgendes Problem und konnte bislang nirgendwo einen Hinweis darauf finden.
siehe: https://www.herber.de/bbs/user/90499.xls
Ich erzeuge zur Laufzeit ein Userform, welchem ich eine Combobox zuweise. Dann fülle ich die Combobox mit Items. Lasse ich mir den Inhalt der Liste ausgeben sind die Items vorhanden. Lasse ich mir das Userform anzeigen ist die Dropdown-Liste der Combobox allerdings leer.
Wäre sehr dankbar für etwaige Ideen.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm ComboBox zur Laufzeit Items unsichtbar
06.05.2014 10:31:44
Ewald
Hallo.
da .List ja nicht gespeichert wird, steht sie auch nicht zur Verfügung.
Entweder füllst du die Combobox erst wenn sie schon erstellt worden ist oder einfach im Code die RowSource setzen.
Im Code für den Button fehlt auch die Dekleration für ctr
 intRow = .CreateEventProc("Click", "CommandButton1")
.InsertLines intRow + 1, "Dim ctr as Control"
Gruß Ewald

AW: UserForm ComboBox zur Laufzeit Items unsichtbar
06.05.2014 11:37:33
Paul
Hallo Ewald,
leider verstehe ich deine Antwort nicht gänzlich.
Ich befülle die ComboBox über die AddItem-Methode mit Daten aus einem String-Array. Ist die RowSource-Methode nicht nur für ein Range-Objekt verfügbar?
Wenn möglich, bitte die Code-Anpassung posten. Danke
Gruß Paul

Anzeige
AW: UserForm ComboBox zur Laufzeit Items unsichtbar
06.05.2014 13:17:53
Ewald
Hallo Paul,
anstatt erst strArray erzeugen, dann an keyArray übergeben, dies ist nicht notwendig
im Code für die Buttonerstellung einfach folgende Zeile einfügen
.RowSource = "J7:J12"
da der Bereich ja im Code des Buttons in Tabelle1 auch fest vorgegeben wird. Dies kannst du dann auch weglassen.
Der Code für den Button in der Tabelle
Private Sub CommandButton1_Click()
Dim strName As String: strName = "frmUserForm"
If ModuleExists(strName) Then
Call DeleteUserForm(strName)
ThisWorkbook.Save
End If
Call ErzeugeUserForm(strName)
End Sub
für die Erzeugung der Combobox in Modul1
Sub ErzeugeUserForm(strName As String)
Set frmComboBox = VBComp.Designer.Controls.Add("Forms.ComboBox.1")
With frmComboBox
.Name = "CB1"
.Clear
.Left = 35
.Top = 35
.Font.Size = 11
.RowSource = "J7:J12"
.Width = 150
.ListWidth = 250
.Style = fmStyleDropDownList
End With
End Sub
Gruß Ewald

Anzeige
AW: UserForm ComboBox zur Laufzeit Items unsichtbar
06.05.2014 15:26:48
Paul
Hallo Ewald,
danke nochmal für die Antwort. Allerdings sind die Range-Daten nur ein einfaches Beispiel.
Meine richtigen Daten kommen aus einem Scripting.Dictionary.
Gruß Paul

AW: UserForm ComboBox zur Laufzeit Items unsichtbar
06.05.2014 13:48:12
Rudi
Hallo,
die Items kannst du erst hinzufügen, wenn die UF existiert.
Private Sub CommandButton1_Click()
Dim rngData As Range
Dim strArray() As String, strName As String
Dim i As Long
Set rngData = ThisWorkbook.Sheets(1).Range("J7:J13")
strName = "frmUserForm"
ReDim strArray(0 To rngData.Rows.Count - 1)
For i = 1 To rngData.Rows.Count
strArray(i - 1) = rngData.Cells(i, 1).Value
Next i
If ModuleExists(strName) Then
Call DeleteUserForm(strName)
ThisWorkbook.Save
End If
Call ErzeugeUserForm(strName, strArray)
End Sub
Sub ErzeugeUserForm(strName As String, strArray)
Dim frmCommandButton As MSForms.CommandButton
Dim frmLabel As MSForms.Label
Dim frmComboBox As MSForms.ComboBox
Dim VBComp As VBComponent
Dim intRow As Integer
Dim strText As String
Dim myUF As Object
Set VBComp = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
With VBComp
.Properties("Caption") = "Setze Parameter des Meldetemplates"
.Properties("Width") = 400
.Properties("Height") = 150
.Properties("BackColor") = RGB(255, 255, 255)
.Properties("BorderColor") = RGB(51, 102, 255)
.Properties("ScrollBars") = fmScrollBarsVertical
.Properties("Name") = strName
End With
' Ein Bezeichnungsfeld einfügen
Set frmLabel = VBComp.Designer.Controls.Add("Forms.label.1")
With frmLabel
.Caption = "ComboBox"
.Font.Size = 12
.Font.Name = "Arial Black"
.BackColor = RGB(51, 102, 255)
.ForeColor = RGB(255, 255, 255)
.BorderColor = RGB(0, 0, 0)
.BorderStyle = fmBorderStyleSingle
.Left = 35
.Top = 10
.AutoSize = True
.WordWrap = False
End With
' Listenfeld einfügen
Set frmComboBox = VBComp.Designer.Controls.Add("Forms.ComboBox.1")
With frmComboBox
.Name = "Combobox1"
.Left = 35
.Top = 35
.Font.Size = 11
.Width = 150
.ListWidth = 250
.Style = fmStyleDropDownList
End With
' Eine Schaltfläche einfügen
Set frmCommandButton = VBComp.Designer.Controls.Add("Forms.CommandButton.1")
With frmCommandButton
.Caption = "Zeige Auswahl"
.Left = 200
.Top = 25
.AutoSize = True
.Font.Bold = True
.Font.Size = 12
End With
With VBComp.CodeModule
intRow = .CreateEventProc("Click", "CommandButton1")
.InsertLines intRow + 1, "  Dim myStr as String, ctr: myStr = """""
.InsertLines intRow + 2, "  For Each ctr In Me.Controls"
.InsertLines intRow + 3, "      If ctr = True Then"
.InsertLines intRow + 4, "          myStr = myStr & ctr.Text"
.InsertLines intRow + 5, "      End If"
.InsertLines intRow + 6, "  Next ctr"
.InsertLines intRow + 7, "  MsgBox myStr"
.InsertLines intRow + 8, ""
.InsertLines intRow + 9, " Me.Hide"
End With
Set myUF = VBA.UserForms.Add(strName)
With myUF
With .ComboBox1
For i = LBound(strArray) To UBound(strArray) Step 1
If strArray(i)  "" Then
.AddItem strArray(i)
End If
Next i
.ListIndex = 0
End With
.Show
End With
End Sub

Gruß
Rudi

Anzeige
AW: UserForm ComboBox zur Laufzeit Items unsichtbar
06.05.2014 15:36:38
Paul
Hallo Rudi,
danke für die Hilfe. Es klappt.
Gruß Paul

wenns klappt dann geschlossen! owT
06.05.2014 16:05:53
Rudi

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige