Anzeige
Archiv - Navigation
1348to1352
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

Suchfunktion

Suchfunktion
06.02.2014 09:39:06
Jens
Hallo Leute,
hab mal wieder ein Problem und hoffe ihr könnt mir wieder mal helfen.
Ich möchte in einer Userform in einer Combobox oder Textbox einen Suchbegriff eingeben und alle Ergebnisse aus Tabelle1 Spalte B sollen in einer listbox aufgelistet werden.
Kommt der Suchbegriff (Zeichenfolge) in der Zelle kommt soll es angezeigt werden.
z.B. Suchbegriff te oder Te
Einträge TEewurst; Zitronentee; Tee; Dachlatte
also alle gefundenen Einträge in denen der Suchbgriff vorkommt sollen in die Listbox.
Ist das möglich?
Wenn ja schon mal vielen Dank im vorraus.
Jens

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

Betreff
Datum
Anwender
Anzeige
AW: String mit gefund. TeilString in Listbox auflisten
06.02.2014 10:54:38
Jens
Vielen Dank für eure Mühen.
Mit der Datei von Matthias kann ich glaub ich was anfangen.
Sind zwar keine Kommentare drin, aber ich versuche mir das so anzupassen das es bei mir dann funktioniert.

Anzeige
hier die Kommentare zum Code ...
06.02.2014 11:26:50
Matthias
Hallo
Hier die Kommentare
Option Explicit
Private Sub CommandButton1_Click()
Dim X As Long '......................Variable deklarieren
On Error Resume Next '...............wenn Fehler, mach weiter
ListBox2.Clear '.....................Listbox2 leeren
With UserForm1.ListBox1 '............Listbox1 referenzieren
For X = 0 To .ListCount - 1 '.......Schleife starten über alle Einträge in Listbox1
.Selected(X) = False '.............Ausschalten falls Listboxeintrag markiert ist
If InStr(1, UCase(.List(X)), UCase(TextBox1)) > 0 Then ' wenn Zeichenfolge vorhanden ist-
.Selected(X) = True '................................. - markiere Listboxeintrag
ListBox2.AddItem .List(X) '......Setze Diesen Eintrag als neuen Eintrag in Listbox2
MsgBox "ok = weiter ...", vbOKOnly, "zum Verstehen ... :-)" 'kannst Du später löschen
.Selected(X) = False '........... Markierung entfernen
End If '..........................Ende iF-Abfrage
Next '..............................nächster Eintrag(Schleife weiterführen)
End With '...........................Referenzierung aufheben
End Sub
Private Sub UserForm_Initialize()
Dim Zeile As Integer '......................Variable deklarieren
ListBox1.Clear '............................Listbox leeren
Zeile = 2 '.................................Zeile festlegen 2="B"
While Tabelle1.Cells(Zeile, 2)  "" '......Schleife bis in Spalte(2) Leerstring kommt
ListBox1.AddItem Tabelle1.Cells(Zeile, 2) 'Neuer Eintrag in Listbox1
Zeile = Zeile + 1 '........................Schleifenzähler um 1 erhöhen
Wend '......................................Schleife weiter wenn Spalte(2) nicht leer
End Sub
Gruß Matthias

Anzeige
Code
06.02.2014 12:13:17
Rudi
Hallo,
nur damit du besser wirst:
1. wozu .Selected(x)=True/ False? Geht auch ohne.
Private Sub CommandButton1_Click()
Dim X As Long '......................Variable deklarieren
On Error Resume Next '...............wenn Fehler, mach weiter
ListBox2.Clear '.....................Listbox2 leeren
With UserForm1.ListBox1 '............Listbox1 referenzieren
For X = 0 To .ListCount - 1 '.......Schleife starten über alle Einträge in Listbox1
'  .Selected(X) = False '.............Ausschalten falls Listboxeintrag markiert ist
If InStr(1, UCase(.List(X)), UCase(TextBox1)) > 0 Then ' wenn Zeichenfolge vorhanden ist-
'   .Selected(X) = True '................................. - markiere Listboxeintrag
ListBox2.AddItem .List(X) '......Setze Diesen Eintrag als neuen Eintrag in Listbox2
'    MsgBox "ok = weiter ...", vbOKOnly, "zum Verstehen ... :-)" 'kannst Du später löschen
'   .Selected(X) = False '........... Markierung entfernen
End If '..........................Ende iF-Abfrage
Next '..............................nächster Eintrag(Schleife weiterführen)
End With '...........................Referenzierung aufheben
End Sub

2. Die Listbox1 kann man ohne Schleife füllen
Private Sub UserForm_Initialize()
'Dim Zeile As Integer '......................Variable deklarieren
ListBox1.Clear '............................Listbox leeren
'Zeile = 2 '.................................Zeile festlegen 2="B"
'While Tabelle1.Cells(Zeile, 2)  "" '......Schleife bis in Spalte(2) Leerstring kommt
' ListBox1.AddItem Tabelle1.Cells(Zeile, 2) 'Neuer Eintrag in Listbox1
' Zeile = Zeile + 1 '........................Schleifenzähler um 1 erhöhen
'Wend '......................................Schleife weiter wenn Spalte(2) nicht leer
With Tabelle1
'Listbox füllen
ListBox1.List = .Range(.Cells(2, 2), .Cells(Rows.Count, 2).End(xlUp)).Value
End With
End Sub
Gruß
Rudi

Anzeige
AW: Code
06.02.2014 14:45:06
Jens
Vielen Dank euch beiden für eure Mühen.
Jetzt kann ich mir das in Ruhe durcharbeiten und auch nachvollziehen was wo passiert.
Gruss und Dank
Jens

Rückantwort ...
06.02.2014 23:35:10
Matthias
Hallo
Zitat:
1. wozu .Selected(x)=True/ False? Geht auch ohne.
Antwort: Ja, ich weiß
Zitat:
Die Listbox1 kann man ohne Schleife füllen
Antwort: Ja, das weiß ich auch.
Erklärung:
Ich habe ein bereits genutztes Skript gepostet und nur leicht modifiziert
Vielleicht verstehst Du es jetzt:
Private Sub CommandButton1_Click()
Dim X As Long
On Error Resume Next
ListBox2.Clear
With UserForm1.ListBox1
For X = 0 To .ListCount - 1
If InStr(1, UCase(.List(X)), UCase(TextBox1)) > 0 Then
.Selected(X) = True
ListBox2.AddItem .List(X)
End If
Next
End With
End Sub
Userbild
Gruß Matthias
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige