Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Userform dynamisch erstellen

Forumthread: Userform dynamisch erstellen

Userform dynamisch erstellen
29.09.2006 12:15:04
Bernd
Hallo Excel-Freunde
Ich versuche eine Userform dynamisch mit comboboxen zu bestücken
Die_Sub die das tun soll seht Ihr hier:

Sub hinzufügen()
Dim CBox As MSForms.ComboBox
Dim box As Object
Dim i As Integer
For Each box In UserForm1.Controls
If TypeName(box) = "ComboBox" Then
i = i + 1
End If
Next box
Load UserForm1
Set CBox = UserForm1.Controls.Add("Forms.ComboBox." & i, , True)
With CBox
.Left = 20
.Top = 60 + 10 * i
.Width = 100
.Height = 20
.Name = "ComboBox" & i
.AddItem "test"
End With
UserForm1.Show
End Sub

Beim ersten Aufruf der_Sub wird eine Combobox eingefügt beim zweiten Aufruf
erscheint die Fehlermeldung "Ungültige Klassenzeichenfolge".
Bin wie immer für alle Anregungen und Tips dankbar.
Gruss Bernd
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform dynamisch erstellen
29.09.2006 12:46:47
Heiko
Hallo Bernd,
ungetestet, aber diese Zeile solltest du ändern:
Set CBox = UserForm1.Controls.Add("Forms.ComboBox." & i, , True)
und zwar so:
Set CBox = UserForm1.Controls.Add("Forms.ComboBox.1", , True)
Denn die 1 hinter Combobox hat nichts mit der Nummerierung der ComboBoxen zu tun.
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Userform dynamisch erstellen
29.09.2006 13:07:19
Bernd
Danke Heiko schon viel besser
Falls sonst noch jemand ein snippet hat bei dem durch eine Benutzereingabe ein Objekt in eine Userform eingefügt wird würde ich mich trotzdem freuen
Gruss Bernd
AW: Userform dynamisch erstellen
29.09.2006 13:06:32
Uwe
Hi Bernd,
noch mal ein ungetesteter Schnellschuss:
Setze das
Next box
ans Ende, vor das Userform1.Show.
Sonst läuft die Schleife immer bis zum Ende und dann wird immer die Combobox mit der höchsten Nummer generiert!? Vielleicht?!!
Gruß
Uwe
(:o)
Anzeige
AW: Userform dynamisch erstellen
29.09.2006 16:18:11
Bernd
Hallo Uwe
Die Schleife soll blos wiedergeben wieviele Comboboxen schon in der userform enthalten sind
egal mein Code sieht jetz folgendermasen aus und funktioniert auch soweit

Sub hinzufügen(s As String)
Dim CBox As MSForms.ComboBox
Dim box As Object
Dim i As Integer
i = 1
For Each box In UserForm1.Controls
If TypeName(box) = "ComboBox" Then
i = i + 1
End If
Next box
Load UserForm1
Set CBox = UserForm1.Controls.Add("Forms.ComboBox.1", , True)
With CBox
.Left = 80
.Top = 60 + 20 * i
.Width = 100
.Height = 20
.Name = "ComboBox" & i
.AddItem "test"
End With
If i = 1 Then
UserForm1.Show
End If
End Sub

Wie kann ich jetzt den erstellten Comboboxen eine

Sub wie Combobox_change zuweisen?
Ich weis irgendjemand von euch weis wie das geht
Gruss Bernd

Anzeige
AW: Userform dynamisch erstellen
29.09.2006 19:35:47
Herbert
Hi,
das geht nur mit einem Klassenmodul, für deinen Kenntnisstand starker Stoff.
Du findest dazu was in der Recherche(Stichwort: Nepumuk).
mfg Herbert
AW: Userform dynamisch erstellen
01.10.2006 12:29:54
Bernd
Hallo Herbert
Danke für den Tip
Gruss Bernd
;
Anzeige
Anzeige

Infobox / Tutorial

Dynamische Userforms in Excel erstellen


Schritt-für-Schritt-Anleitung

In diesem Abschnitt zeigen wir dir, wie du eine dynamische Userform in Excel mit ComboBoxen erstellst. Hier ist der VBA-Code, den du verwenden kannst:

Sub hinzufügen(s As String)
    Dim CBox As MSForms.ComboBox
    Dim box As Object
    Dim i As Integer
    i = 1

    ' Zähle die bestehenden ComboBoxen
    For Each box In UserForm1.Controls
        If TypeName(box) = "ComboBox" Then
            i = i + 1
        End If
    Next box

    Load UserForm1
    Set CBox = UserForm1.Controls.Add("Forms.ComboBox.1", , True)

    With CBox
        .Left = 80
        .Top = 60 + 20 * i
        .Width = 100
        .Height = 20
        .Name = "ComboBox" & i
        .AddItem "test"
    End With

    If i = 1 Then
        UserForm1.Show
    End If
End Sub

Dieser Code zählt die bereits in der Userform vorhandenen ComboBoxen und fügt eine neue ComboBox hinzu. Achte darauf, dass du die Userform vorher lädst.


Häufige Fehler und Lösungen

  1. Ungültige Klassenzeichenfolge: Wenn du beim ersten Aufruf der Subroutine eine ComboBox hinzufügst, aber beim zweiten Aufruf die Fehlermeldung "Ungültige Klassenzeichenfolge" erhältst, ändere die Zeile von:

    Set CBox = UserForm1.Controls.Add("Forms.ComboBox." & i, , True)

    zu:

    Set CBox = UserForm1.Controls.Add("Forms.ComboBox.1", , True)
  2. Fehler beim Anzeigen der Userform: Stelle sicher, dass die Userform mit Load UserForm1 geladen wird, bevor du neue Steuerelemente hinzufügst.


Alternative Methoden

Alternativ kannst du auch ein Klassenmodul verwenden, um die Dynamik deiner Userform zu erhöhen. Dies ermöglicht es dir, spezifische Ereignisse wie ComboBox_Change zuzuweisen. Eine Recherche nach "Nepumuk" kann dir hilfreiche Ressourcen bieten.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du durch Benutzereingaben eine ComboBox in die Userform einfügen kannst:

Sub BenutzerEingabe()
    Dim BenutzerEingabe As String
    BenutzerEingabe = InputBox("Gib einen neuen Eintrag für die ComboBox ein:")
    hinzufügen(BenutzerEingabe)
End Sub

Du kannst diesen Code aufrufen, um beim Erstellen der ComboBox den Benutzereingang zu berücksichtigen.


Tipps für Profis

  • Ereignisbindung: Um Ereignisse für die dynamisch erstellten ComboBoxen zu binden, solltest du ein Klassenmodul erstellen, das die ComboBoxen verwaltet.
  • Flexibilität erhöhen: Überlege, zusätzliche Eigenschaften der ComboBoxen wie Schriftart und Hintergrundfarbe dynamisch anzupassen, um die Benutzeroberfläche ansprechender zu gestalten.

FAQ: Häufige Fragen

1. Wie kann ich den ComboBox_Change-Ereignis zuweisen?
Das Zuweisen des ComboBox_Change-Ereignisses erfordert ein Klassenmodul. Du kannst in der Excel-Dokumentation nach Beispielen suchen.

2. Was mache ich, wenn die Userform nicht angezeigt wird?
Stelle sicher, dass du Load UserForm1 vor dem Anzeigen der Userform aufrufst. Überprüfe auch, ob die Userform korrekt erstellt wurde.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige