funktioniert schonmal! Jetzt wärs noch klasse die doppelten Einträge rauszufiltern. In der Umsatzliste steht zum Beispiel das ich am 01.01.2017 und am 01.03.2017 bei Lieferant "abc" Artikel eingekauft habe. In der Umsatzliste erscheint also abc doppelt. Im Kombinationsfeld soll abc nur einmal erscheinen [img] Dateiupload bitte im Forum! So geht es: Klick mich! ]
01.03.2017, 16:16 (Dieser Beitrag wurde zuletzt bearbeitet: 01.03.2017, 16:23 von atilla.)
Hallo,
das wäre mein Vorschlag:
Code:
Private Sub ComboBox23_GotFocus()
Dim feld As Variant, objDic As Object, i As Long Set objDic = CreateObject("scripting.dictionary") feld = Sheets("Umsätze").Range("Kunde_Lieferant") For i = 1 To UBound(feld) If feld(i, 1) <> "" Then objDic(feld(i, 1)) = "" Next ComboBox23.List = objDic.Keys Set objDic = Nothing End Sub
Hallo Thomas, noch ein Hinweis: Solche Mappen sind gefährdet. Man sollte mit so wenig Farbe wie nötig arbeiten, man sollte Bereiche nur so groß wälen wie nötig, Bedingte Formate in maßen einsetzen, Formen und grafische Elemente nur in Maßen einsetzen, also alles etwas maßvoller einsetzen. Denn sonst ist Die Datei irgendwann nicht mehr brauchbar.
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28 • Thomas78
01.03.2017, 17:07 (Dieser Beitrag wurde zuletzt bearbeitet: 01.03.2017, 17:33 von chris-ka.)
Hi, wenn schon dann auch gleich sortieren. ;) und echt dynamisch gestallten ohne deinen Namen!
Code:
'************************** 'Code in "dieseArbeitsmappe" '************************** Option Explicit Private Sub Workbook_Open() ThisWorkbook.Worksheets("Erfassung").Activate Call cbb End Sub
'******************************** 'Code in einem allgemeinen Modul '******************************** Public Function comeOn(rng As Variant) As Variant Dim Var_Item As Variant, objAL As Object Set objAL = CreateObject("System.Collections.Arraylist") With objAL For Each Var_Item In rng If Var_Item.Value <> "" Then If Not .contains(Var_Item.Value) Then .Add Var_Item.Value End If Next .Sort comeOn = WorksheetFunction.Transpose(.toArray) End With Set objAL = Nothing End Function Sub cbb() Dim rng As Range, Var_ar As Variant Tabelle1.ComboBox23.List = comeOn(Tabelle6.ListObjects(1).ListColumns(3).DataBodyRange) End Sub
Das Kombinationsfeld macht jetzt alles was es soll [img] Dateiupload bitte im Forum! So geht es: Klick mich! ]. Ich finde dieses Forum einfach nur den Wahnsinn. Da wird aus einem einfachen "Wie kann ich ListfillRange mit Namensbereich füllen?" diese Lösung bei der an alles gedacht wurde.
Jetzt muss ich mich leider doch noch mal melden...
Leider verträgt sich irgendwas im Code nicht. Es bringt mir einen Laufzeitfehler wenn ich Daten ins Archiv übertragen will "Fehler beim Vergleich von zwei Elementen im Array".
ja, aber der Wurm war an anderer Stelle. :) Damit sich die Combo aktualisieren kann, habe ich das jetzt so gemacht, dass sich die Combo erst dann aktualisiert wenn ein Rechnungsdatum eingetragen wird.