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

Forumthread: VBA mehrere Comboboxen mit Schleife befüllen

VBA mehrere Comboboxen mit Schleife befüllen
30.05.2018 22:48:09
Student
Hallo Leute,
ich würde gerne mehrere Comboboxen einer Userform mit einer Schleife füllen. Die Comboboxen sollen alle mit unterschiedlichen Werten(jeweils 5), welche in einem Tabellenblatt untereinander stehen. Die Listen stehen untereinander beginnend bei der Zelle A4 bis A9 danach A11 bis A15 usw.
Ich habe es folgendermaßen probiert:
For i = 1 To 15
UserForm.Controls("ComboBox" & i).AddItem Sheets("Tabelle2").Range(Cells(1, j), Cells(1, j + 4))
j=j+7
Next i
Irgendwie will das bei mir nicht funktionieren. Ich bekomme diese Fehlermeldung "Laufzeitfehler 1004 Anwendungs oder objektdefinierter Fehler".
Alternativ würde ich alle Comboboxen mit RowSource füllen jeodoch wäre das sehr umständlich, da das Formular insgesamt 56 Comboboxen enthält.
Hoffe ihr könnt mir helfen! Danke im Voraus :)
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA mehrere Comboboxen mit Schleife befüllen
30.05.2018 23:07:12
onur
Ungetestet:
for i= 1 to 15
For n=1 to 6
UserForm.Controls("ComboBox" & i).AddItem Sheets("Tabelle2").Cells((i-1)* _
7+3+n,1)
'Die Userform heisst doch nicht etwa "Userform"? Wohl eher "Userform1" oder so ähnlich.
Next n
Next i

AW: VBA mehrere Comboboxen mit Schleife befüllen
31.05.2018 00:10:24
Student
Danke für die schnelle Antwort!
Habe es jetzt mit zwei Schleifen hingekriegt. Die Userform hieß tatsächlich "Userform" habe diese dann zunächst in Userform1 unbenannt und dann hat es auch geklappt.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA: Mehrere Comboboxen in einer Userform mit Schleife befüllen


Schritt-für-Schritt-Anleitung

Um mehrere Comboboxen in einer Userform mit einer Schleife zu befüllen, kannst du folgenden Code verwenden. Dieser geht davon aus, dass die Liste der Werte in einem Tabellenblatt (z.B. "Tabelle2") untereinander steht, beginnend bei Zelle A4:

  1. Öffne den VBA-Editor in Excel (ALT + F11).
  2. Erstelle eine Userform mit mehreren Comboboxen (z.B. ComboBox1, ComboBox2, ...).
  3. Füge den folgenden Code in das Codefenster der Userform ein:
Private Sub UserForm_Initialize()
    Dim i As Integer, n As Integer
    For i = 1 To 15
        For n = 1 To 5
            Me.Controls("ComboBox" & i).AddItem Sheets("Tabelle2").Cells((i - 1) * 7 + n + 3, 1)
        Next n
    Next i
End Sub
  1. Teste die Userform. Die Comboboxen sollten nun mit den Werten aus dem angegebenen Bereich gefüllt sein.

Häufige Fehler und Lösungen

Laufzeitfehler 1004: Dieser Fehler tritt häufig auf, wenn die Benutzerform oder die Controls nicht korrekt benannt sind. Stelle sicher, dass die Userform und die Comboboxen die richtigen Namen haben. Überprüfe auch den Tabellennamen und die Zellreferenzen im Code.

Nicht gefüllte Comboboxen: Wenn die Comboboxen leer bleiben, prüfe, ob die Zellen in "Tabelle2" tatsächlich Werte enthalten und dass der Bereich korrekt angegeben ist.


Alternative Methoden

Eine alternative Methode, um die Comboboxen zu befüllen, ist die Verwendung der RowSource-Eigenschaft. Diese ist jedoch weniger flexibel, besonders wenn du viele Comboboxen hast. Du kannst die RowSource wie folgt setzen:

Me.ComboBox1.RowSource = "Tabelle2!A4:A8"
Me.ComboBox2.RowSource = "Tabelle2!A11:A15"
' und so weiter...

Praktische Beispiele

Angenommen, du hast die Werte in den Zellen A4 bis A9, A11 bis A15 usw. Die folgende Schleife füllt die Comboboxen:

Private Sub UserForm_Initialize()
    Dim i As Integer
    For i = 1 To 15
        Me.Controls("ComboBox" & i).AddItem Sheets("Tabelle2").Cells((i - 1) * 7 + 4, 1) ' Zelle A4
    Next i
End Sub

Hierbei wird angenommen, dass jede Combobox mit 5 Werten gefüllt wird und die Zellen untereinander in der Tabelle stehen.


Tipps für Profis

  • Verwende strukturierte Variablen: Statt Me.Controls("ComboBox" & i) kannst du eine Array-Variable verwenden, um die Comboboxen effizienter zu verwalten.

  • Fehlerbehandlung einfügen: Integriere On Error Resume Next und On Error GoTo 0, um Laufzeitfehler elegant zu handhaben.

  • Optimiere mit With-Anweisung: Reduziere die Schreibarbeit beim Arbeiten mit vielen Controls:

With Me.Controls("ComboBox" & i)
    .AddItem Sheets("Tabelle2").Cells((i - 1) * 7 + 4, 1)
End With

FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Comboboxen ändern? Du kannst die Schleife anpassen, indem du die Zahl in For i = 1 To x änderst, wobei x die Anzahl der gewünschten Comboboxen ist.

2. Was tun, wenn ich die Dropdowns nicht sehe? Überprüfe, ob die Userform wirklich angezeigt wird und dass die Comboboxen nicht hinter anderen Elementen verborgen sind. Stelle sicher, dass die Userform richtig initialisiert wird.

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