Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel VBA UserForm ComboBox dyn. füllen

Excel VBA UserForm ComboBox dyn. füllen
29.05.2021 18:12:52
Denis
Hallo liebes Forum,
ich möchte die ComboBoxen meiner UserForm beim Öffnen der Userform dynamisch mit den Einträgen aus Tabelle1 füllen lassen.
In Tabelle 1 werden verschiedene Spalten gefüllt die den Inhalt der verschiedenen Comboboxen darstellen sollen.
Beispiel:
Alle Einträge aus Spalte A = Auswahl der Combobox1
Alle Einträge aus Spalte B = Auswahl der Combobox2
usw.
Mit Alle Einträge meine ich, mal sind es 20 Zeilen, mal sind es 4.
Dies sollte beim Laden der Userform geprüft werden, so dass immer nur das als Auswahl angezeigt wird, was auch wirklich in der Spalte steht.
Im Internet bin ich leider auf keine passende Lösung gestoßen.
Vielen Dank für jede Hilfe!
Liebe Grüße
Denis
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA UserForm ComboBox dyn. füllen
29.05.2021 18:25:30
Hajo_Zi
Hallo Denis,

Option Explicit
Private Sub UserForm_Activate()
Dim LoLetzte As Long
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
ComboBox1.RowSource = "A1:A" & LoLetzte
End Sub
GrußformelHomepage
Anzeige
AW: Excel VBA UserForm ComboBox dyn. füllen
29.05.2021 18:44:15
Denis
Hallo Hajo,
vielen Dank für deine schnelle Hilfe.
Dein Code scheint zu funktionieren, wie bekomme ich es jedoch hin das er folgende Zeile in einem bestimmten Tabellenblatt prüft?
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
Vielen Dank!
LG
Denis
Anzeige
AW: Excel VBA UserForm ComboBox dyn. füllen
29.05.2021 18:54:52
GerdL
Moin Dennis!

Private Sub UserForm_Activate()
Dim Sp As Long
With Worksheets("Tabelle1")
For Sp = 1 To 3 'Anzahl der Comboboxen
Controls("ComboBox" & CStr(Sp)).RowSource = " "
Controls("ComboBox" & CStr(Sp)).RowSource = _
.Name & "!" & .Range(.Cells(1, Sp), .Cells(.rowscount, Sp).End(xlUp)).Address
Next
End With
End Sub
Gruß Gerd
Anzeige
AW: Excel VBA UserForm ComboBox dyn. füllen
29.05.2021 18:55:08
Hajo_Zi
Hallo Denis,
nicht nur in der Zeile.

Option Explicit
Private Sub UserForm_Activate()
Dim LoLetzte As Long
With Worksheets("Tabelle1")
LoLetzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, .Rows.Count)
ComboBox1.RowSource = .Name & "!" & "A1:A" & LoLetzte
End With
End Sub
Gruß Hajo
Anzeige
AW: Excel VBA UserForm ComboBox dyn. füllen
03.06.2021 16:05:50
Denis
Vielen Dank für eure Hilfe!
Habe jetzt den Code von Hajo benutzt, hat super geklappt vielen Dank!
Vielen Dank auch an GerdL.
Bis zum nächsten mal!
Beste Grüße!
AW: Excel VBA UserForm ComboBox dyn. füllen
29.05.2021 20:30:47
Denis
Hallo Hajo,
vielen Dank für deine schnelle Hilfe.
Dein Code scheint zu funktionieren, wie bekomme ich es jedoch hin das er folgende Zeile in einem bestimmten Tabellenblatt prüft?
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
Vielen Dank!
LG
Denis
Anzeige
Doppelt oT
29.05.2021 20:34:25
Hajo_Zi
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Dynamisches Füllen von ComboBoxen in Excel VBA UserForms


Schritt-für-Schritt-Anleitung

Um die ComboBoxen in deiner UserForm dynamisch mit Einträgen aus einem Tabellenblatt zu füllen, folge diesen Schritten:

  1. Visual Basic for Applications (VBA) öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. UserForm erstellen: Füge eine neue UserForm hinzu und platziere die gewünschten ComboBoxen (z.B. ComboBox1, ComboBox2 usw.) darauf.
  3. Code zum Füllen der ComboBoxen hinzufügen:
    • Gehe zum Codefenster der UserForm und füge den folgenden Code ein:
Option Explicit

Private Sub UserForm_Activate()
    Dim LoLetzte As Long
    With Worksheets("Tabelle1") ' Hier den Namen des Tabellenblatts anpassen
        LoLetzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, .Rows.Count)
        ComboBox1.RowSource = .Name & "!" & "A1:A" & LoLetzte ' Für ComboBox1
        ComboBox2.RowSource = .Name & "!" & "B1:B" & LoLetzte ' Für ComboBox2
        ' Weitere ComboBoxen können hier hinzugefügt werden
    End With
End Sub
  1. UserForm testen: Schließe den VBA-Editor und teste die UserForm in Excel. Die ComboBoxen sollten nun beim Öffnen mit den Einträgen aus den angegebenen Spalten gefüllt werden.

Häufige Fehler und Lösungen

  • Fehler: ComboBox bleibt leer: Stelle sicher, dass in den angegebenen Zellen tatsächlich Daten vorhanden sind. Überprüfe auch den Blattnamen im Code.
  • Fehler beim Öffnen der UserForm: Achte darauf, dass die UserForm korrekt aufgerufen wird. Manchmal kann die UserForm nicht angezeigt werden, wenn sie nicht richtig instanziiert wird.

Alternative Methoden

Eine andere Methode, um die ComboBoxen in einer UserForm zu füllen, besteht darin, die Daten manuell in die ComboBoxen einzutragen:

Private Sub UserForm_Activate()
    With ComboBox1
        .AddItem "Eintrag 1"
        .AddItem "Eintrag 2"
        .AddItem "Eintrag 3"
    End With
End Sub

Diese Methode ist nützlich, wenn die Einträge fest sind und nicht aus einem Tabellenblatt stammen.


Praktische Beispiele

Wenn du die ComboBoxen aus einem bestimmten Tabellenblatt füllen möchtest, passe den Code entsprechend an. Zum Beispiel, um die ComboBox1 aus den Einträgen der Spalte A und ComboBox2 aus Spalte B zu füllen:

Private Sub UserForm_Activate()
    Dim LoLetzte As Long
    With Worksheets("Tabelle1")
        LoLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
        ComboBox1.RowSource = .Name & "!" & "A1:A" & LoLetzte
        ComboBox2.RowSource = .Name & "!" & "B1:B" & LoLetzte
    End With
End Sub

Tipps für Profis

  • Nutze die Clear-Methode, um alte Einträge aus der ComboBox zu entfernen, bevor du neue hinzufügst:
ComboBox1.Clear
  • Überlege, die ComboBoxen mit List anstelle von RowSource zu füllen, wenn du mehr Kontrolle über die Einträge benötigst.

FAQ: Häufige Fragen

1. Wie kann ich mehrere ComboBoxen gleichzeitig füllen?
Du kannst eine Schleife nutzen, um mehrere ComboBoxen in einer UserForm dynamisch zu füllen, wie im Beispiel gezeigt.

2. Was tun, wenn die UserForm nicht reagiert?
Überprüfe, ob der Code in der richtigen Prozedur steht. Die UserForm_Activate-Prozedur wird aufgerufen, wenn die Form geöffnet wird.

3. Kann ich die ComboBoxen auch aus einer anderen Arbeitsmappe füllen?
Ja, du kannst auf eine andere Arbeitsmappe zugreifen, indem du den entsprechenden Arbeitsmappenbezug im Code herstellst.

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