Dropdown nicht mit allen Werten befüllen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm ListBox
Bild

Betrifft: Dropdown nicht mit allen Werten befüllen
von: Ronny
Geschrieben am: 20.04.2015 16:12:36

Hallo zusammen. Ich habe in einer Liste in der Spalte K ein Datum. Das Datum ändert etwa nach 100 bis 400 Zeilen. Ist also immer anders. Die Daten kommen aus einer anderen Excel-Datei und werden per Makro importiert. Nun habe ich mir ins Feld O2 eines der Datum reingeschrieben damit ich per Makro alle Zeile die nicht diese Datum haben, löschen kann. Jetzt möchte ich das ich die verschiedenen Datum per DropDown in eine Userform auswählen kann.
Wie kann ich das DropDown so befüllen das von der Liste nicht jede Zeile abgefüllt wird sondern jede vorhandene Datum nur einmal.
Ist das verständlich was ich möchte und es das so irgendwie möglich??

Bild

Betrifft: AW: Dropdown nicht mit allen Werten befüllen
von: Klexy
Geschrieben am: 20.04.2015 17:58:33
Mach eine Hilfsspalte in Spalte L:

=WENNFEHLER(INDEX(K:K;AGGREGAT(15;6;ZEILE(K$2:K$30000)/ISTNV(VERGLEICH(K$2:$K$30000;L$1:L1;)); 1)) &"";"") 


Bild

Betrifft: AW: Dropdown nicht mit allen Werten befüllen
von: Ronny
Geschrieben am: 21.04.2015 06:37:51
Hallo Klexy
Die Idee finde ich gut. Soll ich in Spalte L mittels FormulaLocal die Formel einfügen?
Wenn ich die Formel einfach so eingebe ist das Resultat immer 42111.
Sorry hört sich jetzt vielleicht etwas doof an aber ich weiss wirklich nicht genau wie du das gemeint hast.

Bild

Betrifft: AW: Dropdown nicht mit allen Werten befüllen
von: fcs
Geschrieben am: 21.04.2015 07:47:14
Hallo Ronny,
du musst in der Initialisierungsprozedur der Userforms alle Wert in der Datumsspalte prüfen und ohne Doppelte in die Auswahlliste übernehemn.
Suche mal in der RECHERCHE unter "Listbox ohne doppelte". Da sollte was passendes zu finden sein.
Gruß
Franz

Bild

Betrifft: AW: Dropdown nicht mit allen Werten befüllen
von: Nepumuk
Geschrieben am: 21.04.2015 07:51:23
Hallo,
so kannst du die ComboBox füllen:

Private Sub UserForm_Initialize()
    Dim avntValues As Variant, vntItem As Variant
    Dim objDictionary As Object
    With Tabelle1
        avntValues = .Range(.Cells(2, 11), .Cells(.Rows.Count, 11).End(xlUp)).Value
    End With
    Set objDictionary = CreateObject("Scripting.Dictionary")
    For Each vntItem In avntValues
        objDictionary(vntItem) = vbNullString
    Next
    ComboBox1.List = objDictionary.Keys
    Set objDictionary = Nothing
End Sub

Den Tabellennamen und die Startzeile des Bereiches musst du eventuell anpassen.
Gruß
Nepumuk

Bild

Betrifft: AW: Dropdown nicht mit allen Werten befüllen
von: Ronny
Geschrieben am: 21.04.2015 13:01:07
Das hört sich sehr gut an! Ich habe den Code beim Userform entsprechend rein kopiert.
Die Tabelle heisst Daten das hab ich geändert. Der Rest passt. Im Code von der Tabelle rufe ich das UserFrom über UserForm1.Show auf. Jedoch passiert nichts. Ich bekomme nicht einmal eine Fehlermeldung. Was könnte ich falsch machen?? Offenbar wird der Code nicht ausgeführt. Ich stehe gerade auf dem Schlauch. Danke für die Hilfe!

Bild

Betrifft: AW: Dropdown nicht mit allen Werten befüllen
von: Nepumuk
Geschrieben am: 21.04.2015 13:51:09
Hallo,
keine Ahnung, ich kenn ja deine Mappe nicht. Bei mir hat das funktioniert.
Gruß
Nepumuk

Bild

Betrifft: AW: Dropdown nicht mit allen Werten befüllen
von: fcs
Geschrieben am: 21.04.2015 14:34:58
Hallo Ronny,
hier

   With Tabelle1

musst du den Code-Namen von Blatt "Daten" angeben, wie im VBA-Projekt-Explorer angezeigt
oder
   With Workshets("Daten")

wenn "Daten" der Name auf dem Blattregister ist.
Gruß
Franz

Bild

Betrifft: AW: Dropdown nicht mit allen Werten befüllen
von: Ronny
Geschrieben am: 21.04.2015 15:18:16
Danke habe es ausprobiert, aber es geht genau so wenig. Ich habe meine Tabelle auch schon unbenannt auf Tabelle1 aber auch das geht nicht. Keine Ahnung was ich falsch mache!

Bild

Betrifft: AW: Dropdown nicht mit allen Werten befüllen
von: fcs
Geschrieben am: 22.04.2015 07:46:13
Hallo Ronny,
bei mir hatte sich der Tippfehler-Teufel eungeschlichen - ein "e" fehlte"

   With Worksheets("Daten")
Ansonsten muss du mal -wie von Nepumuk vorgeschlagen- deine Datei abgespeckt/Daten anonymisert mit dem Userform hier hochladen denn die reichweite unberer Kristallkugeln ist begrenzt.
Gruß
Franz

Bild

Betrifft: AW: Dropdown nicht mit allen Werten befüllen
von: Ronny
Geschrieben am: 22.04.2015 07:58:37
Hallo!
Den Tippfehler habe ich bemerkt. Aber an dem hat es nicht gelegen leider.
Das mit der Kristallkugel kann ich gut verstehen. Ich kann das File gerne hochladen.

Bild

Betrifft: AW: Dropdown nicht mit allen Werten befüllen
von: Ronny
Geschrieben am: 22.04.2015 15:57:10
Ich habe meine zwei Dateien als .zip hochgeladen
https://www.herber.de/bbs/user/97239.zip
Danke für die Unterstützung

Bild

Betrifft: AW: Dropdown nicht mit allen Werten befüllen
von: Ronny
Geschrieben am: 23.04.2015 07:43:58
So nun habe ich eine Lösung gefunden!

Private Sub UserForm_Initialize()
Dim X As Long, Y As Long, B As Boolean
With ComboBox1
    .Clear
    For X = 2 To 1000
        If Cells(X, 11) <> "" And Cells(X, 11).RowHeight > 0 Then
            For Y = 1 To X - 1
                If Cells(Y, 11) = Cells(X, 11) Then
                    B = True
                    Exit For
                End If
            Next Y
            If B = False Then
                .AddItem Cells(X, 11)
            Else
                B = False
            End If
        End If
    Next X
End With
End Sub
Das funktioniert perfekt!

Bild

Betrifft: AW: Dropdown nicht mit allen Werten befüllen
von: fcs
Geschrieben am: 23.04.2015 08:00:02
Hallo Ronny,
das Problem liegt an anderer Stelle: Der Name der Prozedur ist nicht korrekt. Die "1" ist zuviel.
Bei deinem neuen Makro hast du das irgendwie unbemerkt korrigiert.

Private Sub UserForm_Initialize()
'Private Sub UserForm1_Initialize()   '#### Falsch
    Dim avntValues As Variant, vntItem As Variant
    Dim objDictionary As Object
    With Worksheets("Daten")
        avntValues = .Range(.Cells(2, 11), .Cells(.Rows.Count, 11).End(xlUp)).Value
    End With
    Set objDictionary = CreateObject("Scripting.Dictionary")
    For Each vntItem In avntValues
        objDictionary(vntItem) = vbNullString
    Next
    ComboBox1.List = objDictionary.Keys
    Set objDictionary = Nothing
End Sub


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Dropdown nicht mit allen Werten befüllen"