Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1880to1884
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
Doppelte Werte in Combobox verhinden
25.04.2022 11:14:12
JoTu
Liebe Lesende,
ich habe eine Excel-Tabelle mit Namen in Spalte C ab Zeile 14, die auch mehrfach vorkommen können.
Zum Beispiel:
Max Mustermann
Clara Musterfrau
Friedemann Liste
Max Mustermann
Max Mustermann
Ich habe unten stehenden Code gefunden, mit dem ich in einer Combobox eine automatische Wertergänzung in Echtzeit erhalte. Sehr praktisch!
Mein Problem: Mehrfachnennungen, wie Max Mustermann, werden entsprechend häufig vorgeschlagen.
Ich habe bereits versucht Lösungen anderer Combobox-Vorschläge zu integrieren, um Mehrfachnennungen zu umgehen. Die meisten sind aber für angelegte Listen, was hier nicht der Fall ist und es deshlab häufig nicht klappt. Insofern gestehe ich meine Unfähgikeit ein, Codes nicht nur zu kopieren sondern auch zu verstehen und bitte deshalb hier um Hilfe.
-> Wie verhindere ich Mehrfachnennungen in einer Combobox bei folgendem Code:

Private Sub ComboBox1_Change()
ComboBox1.List = fncListe(ComboBox1.Value)
ComboBox1.DropDown
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ComboBox1.List = fncListe
End Sub

Function fncListe(Optional sText As String)
Dim arrTmp, n As Integer, i As Integer, arrListe()
arrTmp = Range(Cells(14, 2), Cells(Rows.Count, 2).End(xlUp)) 'Listenbereich
ReDim arrListe(1 To UBound(arrTmp))
On Error Resume Next
For i = 1 To UBound(arrTmp)
If arrTmp(i, 1) Like "*" & sText & "*" Then
n = n + 1
arrListe(n) = arrTmp(i, 1)
End If
Next
ReDim Preserve arrListe(1 To n)
fncListe = arrListe
Dim a As Integer
End Function
Quelle: https://www.herber.de/forum/archiv/1096to1100/1098929_Combobox_EingabeVorschlag_xte_Stelle.html
Fehlende Angaben reiche ich gern nach.
Vielen Dank
Johannes
Windows 10

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte Werte in Combobox verhinden
25.04.2022 11:55:12
JoWE
Hallop Johannes,
vielleicht auch so:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long
ComboBox1.Clear
For i = 14 To Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1).Value = "" Then GoTo weiter
If Application.WorksheetFunction.CountIf(Range(Cells(i, 1), Cells(1, 1)), Cells(i, 1).Value) = 1 Then
ComboBox1.AddItem (Cells(i, 1).Value)
End If
weiter:
Next
End Sub
Gruß
Jochen
AW: Doppelte Werte in Combobox verhinden
25.04.2022 12:02:33
snb
ändere die Eigenschaft style der Combobox in 2 (Dropdownlist)
Wenn der ComboBox nur Unikate enthält kann den Combobox nicht meht geändert werden.
Man befüllt ein Combobox mit Unikate mit Advancedfilter.
Anzeige
AW: Doppelte Werte in Combobox verhinden
25.04.2022 12:14:26
JoTu
Hey Jochen,
danke für deinen Vorschlag. Habe es zuerst 1zu1 übernommen und gewundert, warum mir die Werte aus Spalte A vorgeschlagen werden, aber ja, wer Code lesen kann ist klar im Vorteil :D
Wobei mir die Version von Nepumuk noch besser gefällt. Bei deiner Version werden beim Tippen in die ComboBox alle Namen aus der Spalte angezeigt, wenn auch beim einfachen Dropdown alle nur einmal angezeigt werden... Wäre hier ein Luxusproblem. Aber danke für deine Lösung :)
AW: Doppelte Werte in Combobox verhinden
25.04.2022 11:58:45
Nepumuk
Hallo Johannes,
teste mal:

Private Function fncListe(Optional ByVal opvstrText As String)
Dim avntValues As Variant, vntItem As Variant
Dim objDictionary As Object
Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
avntValues = Range(Cells(14, 2), Cells(Rows.Count, 2).End(xlUp)) 'Listenbereich
For Each vntItem In avntValues
If vntItem Like "*" & opvstrText & "*" Then objDictionary.Item(Key:=vntItem) = vbNullString
Next
fncListe = objDictionary.Keys
Set objDictionary = Nothing
End Function
Gruß
Nepumuk
Anzeige
AW: Doppelte Werte in Combobox verhinden
25.04.2022 12:15:25
JoTu
Hey Nepumuk,
vielen Dank für deine Lösung. Das passt perfekt!
LG, Johannes
AW: Doppelte Werte in Combobox verhinden
25.04.2022 12:26:55
snb

Private Sub Userform_Initialize()
cells(14,3).resize(100).specialcells(2).advancedfilter 2,,cells(1,100),true
Combobox1.list=cells(1,100).currentregion.value
cells(1,100).currentregion.clearcontents
End Sub

AW: Doppelte Werte in Combobox verhinden
25.04.2022 13:23:41
Daniel
Hi
du könntest eine zusätzliche Abfrage einbauen, ob der aktuelle Wert schon in der arrListe vorhanden ist:

If arrTmp(i, 1) Like "*" & sText & "*" Then
if IsError(Application.Match(arrTmp(i, 1), arrListe, 0)) Then
n = n + 1
arrListe(n) = arrTmp(i, 1)
End If
end If
Gruß Daniel
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige