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

Forumthread: Combobox füllen aus Spalte B ohne Doppelte

Combobox füllen aus Spalte B ohne Doppelte
Kai
Hallo,
ich habe auf einer userform eine Combobox und möchte darin alle Daten aus der Tabelle "Kategorien" aus der Spalte A einlesen. Dies darf aber erst ab Zeile 17 losgehen und alle Doppelten Einträge sollen in der Combobox NICHT angezeigt werden.
Also von jeder Kategorie ein Eintrag.
Kann mir da jemand helfen ?
Danke
Kai
Anzeige

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

Betreff
Benutzer
Anzeige
Sorry Korrektur: Spalte A ist gemeint
21.12.2010 08:32:54
Kai
AW: Sorry Korrektur: Spalte A ist gemeint
21.12.2010 08:47:19
ransi
Hallo KAi
Immer wenn es um Doppelte oder Duplikate geht ist das Dictionary-Object erste Wahl.
Versuch es mal so:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit



Public Sub fuellen()
Dim objDic As Object
Dim Bereich As Range
Dim Zelle As Range
Set objDic = CreateObject("Scripting.Dictionary")
With Sheets("Kategorien")
    Set Bereich = .Range(.Range("A17"), .Range("A17").End(xlDown)) 'relevanten Bereich ermitteln
    MsgBox Bereich.Address
End With
For Each Zelle In Bereich
    objDic(Zelle.Value) = 0 'Nur Unikate sammeln
Next
ComboBox1.List = objDic.keys 'Unikate der ComboBox zuweisen
End Sub


ransi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Combobox füllen aus Spalte A ohne Doppelte


Schritt-für-Schritt-Anleitung

Um eine ComboBox in Excel mit Daten aus einer bestimmten Spalte zu füllen und dabei doppelte Einträge zu vermeiden, kannst du den folgenden VBA-Code verwenden. Dieser Code füllt die ComboBox mit Werten aus der Spalte A der Tabelle "Kategorien", beginnend ab Zeile 17.

  1. Öffne den VBA-Editor in Excel (Alt + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).

  3. Kopiere den folgenden Code in das Modul:

    Option Explicit
    
    Public Sub fuellen()
       Dim objDic As Object
       Dim Bereich As Range
       Dim Zelle As Range
       Set objDic = CreateObject("Scripting.Dictionary")
    
       With Sheets("Kategorien")
           Set Bereich = .Range(.Range("A17"), .Range("A17").End(xlDown)) ' relevanten Bereich ermitteln
           MsgBox Bereich.Address
       End With
    
       For Each Zelle In Bereich
           objDic(Zelle.Value) = 0 ' Nur Unikate sammeln
       Next
    
       ComboBox1.List = objDic.keys ' Unikate der ComboBox zuweisen
    End Sub
  4. Schließe den VBA-Editor und kehre zu deiner UserForm zurück.

  5. Rufe die fuellen-Subroutine auf, um die ComboBox zu füllen.


Häufige Fehler und Lösungen

  • Fehler: ComboBox bleibt leer
    Lösung: Stelle sicher, dass der Code zur Füllung der ComboBox aufgerufen wird, nachdem die UserForm geladen wurde. Du kannst dies im UserForm_Initialize-Ereignis tun.

  • Fehler: Doppelte Werte werden angezeigt
    Lösung: Überprüfe, ob die Scripting.Dictionary-Objekte korrekt erstellt und verwendet werden. Sie sind notwendig, um sicherzustellen, dass nur einzigartige Werte in die ComboBox gelangen.


Alternative Methoden

Eine andere Möglichkeit, die ComboBox zu füllen, besteht darin, die RemoveDuplicates-Funktion von Excel zu verwenden. Dies könnte jedoch etwas komplexer sein, da du die Daten zuerst in ein Array kopieren und dann die Duplikate entfernen musst.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die ComboBox in einer UserForm mit Kategorien füllen kannst:

  • Angenommen, du hast in der Tabelle "Kategorien" folgende Daten in Spalte A (ab Zeile 17):

    Apfel
    Banane
    Apfel
    Orange
    Banane
    Traube
  • Nach der Ausführung des obigen Codes wird die ComboBox die folgenden Werte anzeigen:

    Apfel
    Banane
    Orange
    Traube

Tipps für Profis

  • Nutze den Item-Parameter der ComboBox, um spezifische Werte zu manipulieren.
  • Experimentiere mit dem ListIndex, um den ausgewählten Wert programmgesteuert zu ändern.
  • Achte darauf, den VBA-Code regelmäßig zu testen, vor allem, wenn Änderungen an der Struktur der Daten vorgenommen werden.

FAQ: Häufige Fragen

1. Wie kann ich die ComboBox automatisch aktualisieren?
Du kannst die fuellen-Subroutine im UserForm_Activate-Ereignis aufrufen, damit die ComboBox bei jedem Öffnen der UserForm aktualisiert wird.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen. Achte darauf, dass die Scripting.Dictionary-Bibliothek aktiviert ist.

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