Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1904to1908
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Doppelte Einträge in UF.Listbox vermeide

Doppelte Einträge in UF.Listbox vermeide
10.11.2022 11:01:37
Captain
Moin zusammen,
ich habe auf meiner Userform eine Listbox und befülle diese mit Daten aus der Tabelle. Hier brauche ich aber nur den E-Mail Anbieter aus der Email-Adresse. Mit folgenden Code klappt das auch:

Private Sub UserForm_Initialize()
lngAnzZeilen = Worksheets("e_Liste").Cells(Rows.Count, 1).End(xlUp).Row
With Me.lstAnbieter
For i = 2 To lngAnzZeilen
.AddItem Mid(Worksheets("e_Liste").Cells(i, 5), InStr(Worksheets("e_Liste").Cells(i, 5), "@") + 1)
Next i
End With
End Sub
Wie aber kann ich doppelte Einträge vermeiden?
Danke für eure Hilfe
Jack

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte Einträge in UF.Listbox vermeide
10.11.2022 11:13:12
Nepumuk
Hallo Jack,
teste mal:

Private Sub UserForm_Initialize()
Dim avntValues As Variant, vntItem As Variant
Dim objDictionary As Object
Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
With Worksheets("e_Liste")
avntValues = .Range(.Cells(2, 5), .Cells(Rows.Count, 5).End(xlUp)).Value2
End With
For Each vntItem In avntValues
objDictionary.Item(Mid$(vntItem, InStr(1, vntItem, "@") + 1)) = vbNullString
Next
lstAnbieter.List = objDictionary.Keys
Set objDictionary = Nothing
End Sub
Gruß
Nepumuk
AW: Doppelte Einträge in UF.Listbox vermeide
10.11.2022 11:17:36
Captain
Hi Nepumuk,
super, vielen vielen Dank. Läuft wie am Schnürrchen... ich versteh zwar nix, aber... klasse .-)
cu
Jack
Anzeige
AW: Doppelte Einträge in UF.Listbox vermeide
10.11.2022 11:19:46
snb
Benütze die Excel Eigenschaften:
Verzichte immer auf 'Additem'.

Private Sub UserForm_Initialize()
sheets("e_Liste").Cells(1).currentregion.columns(1).advancedfilter 2,, sheets("e_Liste").cells(1,100),true
lstAnbieter.list=sheets("e_Liste").cells(1,100),currentregion.value
sheets("e_Liste").cells(1,100),currentregion.clear
End Sub

AW: Doppelte Einträge in UF.Listbox vermeide
10.11.2022 11:30:32
Daniel
HI
Doppelte Einträge kann man in Listboxen ganz einfach vermeiden, in dem man vor dem Einfügen eine Schleife über die bereits vorhandenen Einträge der Listbox erstellt, in der man prüft ob der Eintrag schon drin ist. Da Listboxen in der Regel nicht tausende von Einträgen haben, sind solche Schleifen kein problem.
das ganze sieht dann im Prinzip so aus:

   Private Sub UserForm_Initialize()
lngAnzZeilen = Worksheets("e_Liste").Cells(Rows.Count, 1).End(xlUp).Row
With Me.lstAnbieter
For i = 2 To lngAnzZeilen
txt = Worksheets("e_Liste").Cells(i, 5), InStr(Worksheets("e_Liste").Cells(i, 5), "@") + 1
for x = 0 to .ListCount - 1
if .List(x) = txt then exit for
next x
if x > (.ListCount - 1) then  .AddItem txt
Next i
End With
End Sub
da man bei einer Listbox Daten nicht nur am Ende hinzufügen kann sondern auch mitten drin an einer bestimmten Postion, kann man nach diesem Prinzip sogar gleich die Inhalte der Listbox sortieren, ohne dass man fortgeschrittene Programmiertechniken (Dictionary, SortedArrayList) oder den Umweg über das Exceltabellenblatt verwenden muss (wobei dieser auch sehr elegant sein kann, da wenige Schritte, keine Schleife und der Code zum größten Teil per Recorder aufzeichenbar)
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige