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
Anzeige