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

Forumthread: ComboBox dynamisch per vba

ComboBox dynamisch per vba
31.01.2006 14:25:13
Bulli
Hallo VBA Cracks,
habe aus der Recherche einen Code entdeckt, den ich auch schon in meine Anwendung eingebaut habe.
Ich möchte die RowSource einer ComboBox dynamisch mit auf Tabellenblättern hinterlegten Werten füllen. Funktioniert auch einwandfrei, lediglich im Fall, dass es nur einen Wert gibt es neben diesem ersten Wert auch viele leere Auswahlmöglichkeiten in meiner Combobox.
Weiß jemand Abhilfe?

Private Sub CommandButton3_Click()
ComboBox2.Visible = True
Label3.Visible = True
mysheet = ComboBox1.Value
With Worksheets(mysheet)
.Select
ComboBox2.RowSource = Range(.Range("A1"), .Range("A1").End(xlDown)).Address
End With
End Sub

vielen Dank im Voraus,
viele Grüße,
Bulli
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox dynamisch per vba
31.01.2006 14:45:17
Ingo
Nur mal ein Versuch.Ungetestet.

Private Sub CommandButton3_Click()
ComboBox2.Visible = True
Label3.Visible = True
mysheet = ComboBox1.Value
With Worksheets(mysheet)
.Select
ComboBox2.RowSource = Range(.Range("A1"), .Range("A65536").End(xlUp)).Address
End With
End Sub

mfG
Ingo Christiansen
Anzeige
AW: ComboBox dynamisch per vba
31.01.2006 14:53:49
Bulli
Hallo Ingo,
funktioniert leider nicht, nun würden auch bei den Auswahllisten mit mehrereren Möglichkeiten leere Felder angezeigt...
mfg
Bulli
AW: ComboBox dynamisch per vba
31.01.2006 15:09:14
Ulli
Hi,
wenn du RowSource verwenden willst, musst du die Tabelle entsprechend aufbereiten.
Alternativ kannst du die Box mit List oder AddItem füllen.
mfg Ulli
Anzeige
AW: ComboBox dynamisch per vba
31.01.2006 15:52:04
ede
und wenn du es so probierst, funkt dann?
Bereich = "A1:A" & Cells(65536, 1).End(xlUp).Row
ComboBox2.RowSource = Bereich
gruss
AW: ComboBox dynamisch per vba
31.01.2006 16:48:41
Bulli
Vielen Dank für die Bemühungen,
habs selbst rausgefunden:
ComboBox2.RowSource = Range(.Range("A1").End(xlDown), .Range("A999").End(xlUp)).Address
viel Grüße,
Bulli
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

ComboBox dynamisch per VBA füllen


Schritt-für-Schritt-Anleitung

Um eine ComboBox in Excel dynamisch mit VBA zu füllen, kannst du die folgende Schritt-für-Schritt-Anleitung nutzen:

  1. Öffne dein Excel-Dokument und gehe in den VBA-Editor (Alt + F11).

  2. Füge ein UserForm hinzu, falls du noch keins hast.

  3. Platziere eine ComboBox (ComboBox2) und einen CommandButton (CommandButton3) auf dem UserForm.

  4. Füge den folgenden VBA-Code in das Code-Fenster des UserForms ein:

    Private Sub CommandButton3_Click()
       ComboBox2.Visible = True
       Label3.Visible = True
       mysheet = ComboBox1.Value
       With Worksheets(mysheet)
           ComboBox2.RowSource = Range(.Range("A1").End(xlDown), .Range("A999").End(xlUp)).Address
       End With
    End Sub
  5. Achte darauf, dass die Daten in den Zellen A1 bis A999 auf dem gewählten Tabellenblatt liegen.


Häufige Fehler und Lösungen

  • Leere Auswahlmöglichkeiten: Wenn du leere Felder in deiner ComboBox siehst, könnte es daran liegen, dass die Auswahlquelle nicht richtig definiert ist. Stelle sicher, dass du die richtige Range verwendest, wie im obigen Code gezeigt.
  • Falsche Arbeitsblattnamen: Überprüfe, ob der Wert in ComboBox1 tatsächlich ein existierendes Arbeitsblatt repräsentiert. Ein Tippfehler kann dazu führen, dass der Code nicht funktioniert.
  • Excel-Versionen: Achte darauf, dass du eine Version von Excel verwendest, die VBA unterstützt (Excel 2003 oder neuer).

Alternative Methoden

Wenn du die ComboBox nicht über die RowSource füllen möchtest, kannst du auch die Methoden List oder AddItem verwenden. Hier ein Beispiel:

Private Sub CommandButton3_Click()
    Dim ws As Worksheet
    Dim i As Integer
    Set ws = Worksheets(ComboBox1.Value)

    ComboBox2.Clear
    For i = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Row
        ComboBox2.AddItem ws.Cells(i, 1).Value
    Next i
End Sub

Diese Methode ist besonders nützlich, wenn du die ComboBox mit spezifischen Daten füllen möchtest, die nicht unbedingt in einem kontinuierlichen Bereich liegen.


Praktische Beispiele

Hier sind einige Beispiele, wie du die ComboBox dynamisch füllen kannst:

  1. Füllen aus einem bestimmten Bereich: Du kannst die ComboBox aus einem bestimmten Bereich eines Tabellenblattes füllen:

    ComboBox2.RowSource = "Tabelle1!A1:A10"
  2. Dynamische Liste basierend auf einer Bedingung: Wenn du nur bestimmte Werte anzeigen möchtest, kannst du Bedingungen in deiner Schleife hinzufügen:

    For i = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Row
       If ws.Cells(i, 1).Value <> "" Then
           ComboBox2.AddItem ws.Cells(i, 1).Value
       End If
    Next i

Tipps für Profis

  • Verwende die ListCount-Eigenschaft der ComboBox, um zu überprüfen, wie viele Elemente aktuell geladen sind. So kannst du zusätzliche Logik hinzufügen, wenn die Liste leer ist.
  • Experimentiere mit Excel VBA ListBox, um zusätzliche Funktionalitäten zu nutzen, wenn du mehr als eine Auswahl benötigen solltest.
  • Achte darauf, dein VBA-Projekt regelmäßig zu speichern, um nicht bei einem Fehler deine Arbeit zu verlieren.

FAQ: Häufige Fragen

1. Wie kann ich eine ListBox dynamisch füllen?
Die Methode ist ähnlich wie bei der ComboBox. Du kannst die List-Eigenschaft nutzen, um die Werte hinzuzufügen:

ListBox1.AddItem "Neuer Wert"

2. Was kann ich tun, wenn meine ComboBox nicht sichtbar ist?
Überprüfe die Sichtbarkeitseinstellungen in deinem VBA-Code und stelle sicher, dass die ComboBox auf dem UserForm sichtbar ist, bevor du versuchst, sie zu füllen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige