Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1088to1092
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

Listbox - Sucheinträge nur "einmal" aufführen

Listbox - Sucheinträge nur "einmal" aufführen
Kay
Hallo,
in einer Listbox, lasse ich alle gesuchten Zeilen einlesen - in der ein Suchbegriff gefunden wird.
Dabei kommt es vor - dass z.B. der Text auch in der Kopfzeile steht oder mehrfach in einer Zeile.
Wie kann ich den Code so anpassen, dass wenn etwas in einer Zeile gefunden wird - diese auch nur EINMAL erscheint und wie kann ich die Kopfzeile der Tabelle von der suche ausschließen ?
Achja, eine Frage noch - kann man den Suchtext einfach so ändern, dass es immer mit "*"-Ist ?
xSuche = "*"& TB1.Value &"*"
Hier mein verwendeter Code:
Option Explicit
Dim wks As Worksheet
Dim wkb1, wkb2 As Workbook
Dim XBlatt, wks2 As Worksheet
Dim XZeile As Long
Dim Suchart As String
Dim xOpt As Integer
Private Sub CommandButton3_Click()
Dim xSuche, xAdresse, xErste, SO As String
Dim Y As Boolean
Dim arr() As Variant
Dim rng As Range
Dim iCounter, iRowU As Integer
LB1.Clear
xSuche = TB1.Value
Suchart = xlWhole
If xSuche = "" Then
MsgBox "Bitte erst einen Suchbegriff eingeben!", vbExclamation, "Achtung!"
Exit Sub
End If
If OB1.Value = True Then
SO = "ATE"
Else
If OB2.Value = True Then
SO = "ZKE"
Else
If OB3.Value = True Then
SO = "STE"
End If
End If
End If
For iCounter = 1 To 3
If Worksheets(iCounter).Name = SO Then
Set rng = Worksheets(iCounter).Cells.Find _
(xSuche, LookAt:=Suchart, LookIn:=xlValues)
If Not rng Is Nothing Then
With Worksheets(iCounter)
xErste = rng.Address(False, False)
Y = True
Do Until xAdresse = xErste
ReDim Preserve arr(0 To 15, 0 To iRowU)
arr(0, iRowU) = .Name
arr(1, iRowU) = rng.Address(False, False)
arr(2, iRowU) = .Cells(rng.Row, 1)
arr(3, iRowU) = .Cells(rng.Row, 2)
arr(4, iRowU) = .Cells(rng.Row, 3)
arr(5, iRowU) = .Cells(rng.Row, 4)
arr(6, iRowU) = .Cells(rng.Row, 5)
arr(7, iRowU) = .Cells(rng.Row, 6)
arr(8, iRowU) = .Cells(rng.Row, 7)
arr(9, iRowU) = .Cells(rng.Row, 8)
arr(10, iRowU) = .Cells(rng.Row, 9)
arr(11, iRowU) = .Cells(rng.Row, 10)
arr(12, iRowU) = .Cells(rng.Row, 11)
arr(13, iRowU) = .Cells(rng.Row, 12)
arr(14, iRowU) = .Cells(rng.Row, 13)
arr(15, iRowU) = .Cells(rng.Row, 14)
iRowU = iRowU + 1
Set rng = .Cells.FindNext(After:=rng)
xAdresse = rng.Address(False, False)
Loop
xAdresse = ""
xErste = ""
End With
End If
End If
Next iCounter
If Y = False Then
MsgBox "Der Suchbegriff konnte leider nicht gefunden werden!"
Else
LB1.Column = arr
End If
End Sub
Danke und Gruß
Kay

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Listbox - Sucheinträge nur "einmal" aufführen
18.07.2009 19:57:58
Daniel
Hi
um die Spaltenüberschrift aus der Suche auszuschließen und immer nur nach Teilbegriffen (suche mit Stern) zu Suchen, musst du die Zeile mit der Suchfuntkion so ändern:
Set rng = Worksheets(iCounter).Range("4:65536").Find _
(xSuche, LookAt:=Suchart, LookIn:=xlValues, Lookat:=xlpart)

in dem genannten Beispiel würde die Suche erst in Zeile 4 beginnen.
die Frage nach der Einmaligkeit ist schon etwas schwieriger, hier müsstest du dein Array erstmal durchsuchen, ob der Eintrag schon mal vorkommt und nur einfügen, falls er noch nicht vorkommt.
Gruß, Daniel
Anzeige
AW: Listbox - Sucheinträge nur "einmal" aufführen
18.07.2009 20:07:29
Kay
Hi Daniel,
vielen Dank für den Tipp mit dem Range-Bereich entsprechend anzupassen...
Aber hier weiß ich nicht wie das geht ?
"...die Frage nach der Einmaligkeit ist schon etwas schwieriger, hier müsstest du dein Array erstmal durchsuchen, ob der Eintrag schon mal vorkommt und nur einfügen, falls er noch nicht vorkommt."
Gruß
Kay
AW: Listbox - Sucheinträge nur "einmal" aufführen
18.07.2009 21:03:58
Daniel
Hi
naja im Prinzip etwa so:
Do Until xAdresse = xErste

For i = 0 to iRowU
if arr(0, i) = .Name and arr(1, i) = rng.Address(False, False) then Exit For
next
if i > iRowU then   
ReDim Preserve arr(0 To 15, 0 To iRowU)
arr(0, iRowU) = .Name
arr(1, iRowU) = rng.Address(False, False)
arr(2, iRowU) = .Cells(rng.Row, 1)
arr(3, iRowU) = .Cells(rng.Row, 2)
arr(4, iRowU) = .Cells(rng.Row, 3)
arr(5, iRowU) = .Cells(rng.Row, 4)
arr(6, iRowU) = .Cells(rng.Row, 5)
arr(7, iRowU) = .Cells(rng.Row, 6)
arr(8, iRowU) = .Cells(rng.Row, 7)
arr(9, iRowU) = .Cells(rng.Row, 8)
arr(10, iRowU) = .Cells(rng.Row, 9)
arr(11, iRowU) = .Cells(rng.Row, 10)
arr(12, iRowU) = .Cells(rng.Row, 11)
arr(13, iRowU) = .Cells(rng.Row, 12)
arr(14, iRowU) = .Cells(rng.Row, 13)
arr(15, iRowU) = .Cells(rng.Row, 14)
iRowU = iRowU + 1
 end if
Set rng = .Cells.FindNext(After:=rng)
xAdresse = rng.Address(False, False)
Loop
ist jetzt nicht getestet, aber du musst in einer Schleife dein Array druchlaufen und prüfen, ob der gefundene Eintag mit einem Einttrag aus der bereits vorhanden Liste übereinstimmt.
Gruß, Daniel
Anzeige
AW: Listbox - Sucheinträge nur "einmal" aufführen
20.07.2009 13:58:10
k
Hi habe den Code probiert,
aber bekomme aber keine Anzeige von Einträgen mehr...was mach ich Falsch ?!
gibt es evtl. eine Beispieldatei von jeamden, damit ich das Prinzip besser nachvollziehen und lernen kann ?
Gruß und Danke Kay
AW: Listbox - Sucheinträge nur "einmal" aufführen
23.07.2009 01:54:24
Adelhorst
Hallo k.
Zwei Möglichkeiten:
1. Du sortierst deine ausgelesene Liste und durchläufst die Liste von unten nach oben durch. Wenn der letzte mit dem vorletzten Eintrag identisch ist löscht du den letzten Eintrag usw.
2. Mit der WorksheetFunktion.CountIf fragst du vor dem Eintragen in die Liste ab, ob der Eintrag von der aktuellen Zeile bis zur Startzeile nach oben, 1x vorhanden ist. Erst dann trägst du ihn in deine Liste ein, denn ist er mehr als 1x vorhanden, hast du ihn j schon 1x eingetragen. Dies ist schneller, als deine Liste immer wieder zu durchlaufen und nach einen gleichwertigen Eintrag zu suchen.
Gruss Adelhorst
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