AW: Zellinhalt (mehrere Namen) in Listbox markieren
07.08.2016 14:24:33
Daniel
Hi
das kann man auch etwas einfacher lösen.
Wichtig ist, dass das Trennzeichen (TZ) zwischen den Namen in der Zelle immer gleich ist.
Das Trennzeichen darf auch aus mehreren Zeichen bestehen. (Komma+Leerzeichen)
TZ = ", "
For i = 0 to Listbox1.ListCount - 1
Listbox1.selected(i) = TZ & ActiveCell.Value & TZ like "*" & TZ & Listbox1.List(i) & TZ & "*"
next
wenn das Trennzeichen unterschiedlich geschrieben sein kann, müsste man es bereinigen und die Leerzeichen vor und nach dem Komma eleminieren:
TZ = ","
TXT = ActiveCell.Value
TXT = Worksheetfunction.Trim(TXT)
TXT = Replace(TXT, " ,", ",")
TXT = Replace(TXT, ", ", ",")
TXT = TZ & TXT & TZ
For i = 0 to Listbox1.ListCount - 1
Listbox1.selected(i) = TXT like "*" & TZ & Listbox1.List(i) & TZ & "*"
next
wenn die LIKE-Funktion unbekannt ist, könnte man auch mit Instr arbeiten:
Listbox1.Selected(i) = Instr(TXT, TZ & Listbox1.List(i) & TZ) > 0
geprüft wird einfach, ob der Listboxwert in der Zelle enthalten ist.
durch die Hinzunahme des Trennzeichens vermeidet man, dass "xxx" bei "abcxxxdef" als enthalten gezählt wird.
Damit erster und letzter Name in der Zelle keine Sonderfälle darstellen, fügt man auch beim Zelltext am Anfang und Ende die Trennzeichen hinzu.
Gruß Daniel