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

Forumthread: ComboBox füllen ohne Duplikate via VBA

ComboBox füllen ohne Duplikate via VBA
chrissey
Guten Morgen,
hätte eine Frage bezüglich des Füllens einer ComboBox ohne Duplikate:
Habe eine Projektliste mit ca. 100 Projekten. In Spalte C der Liste sind
die Projektländer eingetragen. Jetz hätte ich gern ein Dropdownmenü
in dem ich ein Projektland auswählen kann. Jedoch kommen die Länder
in Spalte C öfter vor.
Meine Frage:
Wir kann ich eine ComboBox via VBA füllen ohen dass Duplikatwerte übernommen werden?
Danke euch schon mal und Grüße und einen guten Start in den Tag!!!
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
mit Dictionary...
12.10.2009 07:34:16
Tino
Hallo,
z. Bsp. so
Private Sub UserForm_Initialize()
Dim oDic As Object, meAr
Dim A As Long

Set oDic = CreateObject("Scripting.Dictionary")
'Tabelle anpassen 
With Sheets("Tabelle2")
 'bereich anpassen, hier ohne Überschrift 
 meAr = Range("C2", .Cells(.Rows.Count, 3).End(xlUp))
End With

For A = 1 To Ubound(meAr)
  oDic(meAr(A, 1)) = 0
Next

ComboBox1.List = oDic.keys

End Sub
Gruß Tino
Anzeige
es fehlt noch ein Punkt
12.10.2009 07:37:59
Tino
Hallo,
mach noch einen Punkt vor Range
meAr = .Range("C2", .Cells(.Rows.Count, 3).End(xlUp))
Gruß Tino
AW: es fehlt noch ein Punkt
12.10.2009 16:23:15
chrissey
Danke,
hat super geklappt.
Grüße
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

ComboBox füllen ohne Duplikate via VBA


Schritt-für-Schritt-Anleitung

Um eine ComboBox in Excel zu füllen und dabei Duplikate auszublenden, kannst Du den folgenden VBA-Code verwenden. Dieser Code nutzt ein Dictionary-Objekt, um nur eindeutige Werte zu speichern.

  1. Öffne den VBA-Editor mit ALT + F11.
  2. Füge ein neues UserForm hinzu.
  3. Füge eine ComboBox zu Deinem UserForm hinzu (z. B. ComboBox1).
  4. Füge den folgenden Code in das UserForm ein:
Private Sub UserForm_Initialize()
    Dim oDic As Object, meAr
    Dim A As Long

    Set oDic = CreateObject("Scripting.Dictionary")
    ' Tabelle anpassen
    With Sheets("Tabelle2")
        ' Bereich anpassen, hier ohne Überschrift
        meAr = Range("C2", .Cells(.Rows.Count, 3).End(xlUp))
    End With

    For A = 1 To UBound(meAr)
        oDic(meAr(A, 1)) = 0
    Next

    ComboBox1.List = oDic.Keys
End Sub
  1. Stelle sicher, dass die Tabelle den Namen "Tabelle2" hat und Deine Daten in Spalte C ab Zeile 2 beginnen.

Häufige Fehler und Lösungen

  • Fehler: "Runtime Error 9: Subscript out of range"

    • Lösung: Überprüfe, ob der Tabellenname korrekt ist. Stelle sicher, dass "Tabelle2" existiert.
  • Fehler: ComboBox zeigt keine Werte an.

    • Lösung: Stelle sicher, dass der Code im UserForm_Initialize-Ereignis korrekt platziert ist und dass der Bereich in der Tabelle richtig definiert ist.

Alternative Methoden

Wenn Du keine VBA-Lösung verwenden möchtest, kannst Du auch Datenüberprüfung verwenden, um ein Dropdown-Menü zu erstellen. Hierbei kannst Du die Funktion "Datenüberprüfung" nutzen und die Formel =UNIQUE() in neueren Excel-Versionen verwenden, um Duplikate automatisch zu entfernen.

  1. Wähle die Zelle aus, in der das Dropdown-Menü erscheinen soll.
  2. Gehe zu "Daten" > "Datenüberprüfung".
  3. Wähle "Liste" aus und gib den Bereich ein, z. B. =UNIQUE(Tabelle2!C2:C100).

Praktische Beispiele

Wenn Du beispielsweise eine Projektliste hast, in der verschiedene Länder aufgeführt sind, kannst Du die ComboBox mit diesem VBA-Code füllen. Durch die Verwendung des Dictionary-Objekts wird sichergestellt, dass jedes Land nur einmal in der ComboBox erscheint, was die Benutzerfreundlichkeit erhöht.


Tipps für Profis

  • Verwende den Option Explicit-Befehl am Anfang Deines Codes, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Du kannst den Code anpassen, um die ComboBox basierend auf bestimmten Kriterien zu filtern, z. B. nur Länder, die mit einem bestimmten Buchstaben beginnen.

FAQ: Häufige Fragen

1. Wie kann ich die ComboBox in einem bestehenden UserForm füllen? Du kannst den obigen Code in das UserForm_Initialize-Ereignis Deines bestehenden UserForms einfügen.

2. Funktioniert dieser Code auch in älteren Excel-Versionen? Der Code sollte in den meisten VBA-fähigen Excel-Versionen funktionieren, jedoch kann die Unterstützung für das Dictionary-Objekt variieren. Stelle sicher, dass Du über die entsprechenden Referenzen verfügst.

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