Volltextsuche in Array
22.07.2021 08:30:30
Peter
ich suche schon die ganze Zeit nach einer Möglichkeit, mehrere Filter in einem Userform einzubauen. Mittlerweile habe ich es hinbekommen, dass man die Listbox in der Userform nach Datum und mehreren FilterBoxen eingrenzen kann. Hierzu nehme ich folgendes Sub:
Private Sub FilterBox1_Change()
Call Filterliste
End Sub
Private Sub FilterBox2_Change()
Call FilterListe
End Sub
.....
Private Sub FilterListe()
Dim lzeile As Long
Dim lZeileMaximum As Long
Dim i As Integer
Dim lAnzahl As Long
Dim col As New Collection
Dim varKreis, varArt, varStatus, varVolltext As String
Dim varDatumVon, varDatumBis As Date
Dim NrMonat As Integer
On Error GoTo Fehler 'sorgt dafür, dass wenn bei leerer Liste der Index-Fehler auftritt zum Ende gesprungen wird.
varKreis = Me.FilterBox1.Text
varArt = Me.FilterBox2.Text
varStatus = Me.FilterBox3.Text
varDatumVon = Me.FilterDatumVon.Text
varDatumBis = Me.FilterDatumBis.Text
'varVolltext = Me.Volltextsuche.Text
'Anzahl der Treffer-Zeilen ermitteln
lAnzahl = 0
For lzeile = LBound(arrListeAlle) To UBound(arrListeAlle)
If (varKreis = "(Alle)" Or varKreis = arrListeAlle(lzeile, 5)) And _
(varArt = "(Alle)" Or varArt = arrListeAlle(lzeile, 4)) And _
(varStatus = "(Alle)" Or varStatus = arrListeAlle(lzeile, 9)) And _
((varDatumVon = arrListeAlle(lzeile, 3))) Then
lAnzahl = lAnzahl + 1
col.Add lzeile
End If
Next
If lAnzahl > 0 Then
'Array für Listendaten dimensionieren
ReDim arrListe(1 To lAnzahl, 1 To 12)
'Listendaten in Array einlesen
For lAnzahl = 1 To col.Count
lzeile = arrListeAlle(col(lAnzahl), 1)
arrListe(lAnzahl, 1) = lzeile
arrListe(lAnzahl, 2) = CStr(Tabelle3.Cells(lzeile, 3).Text)
arrListe(lAnzahl, 3) = CStr(Tabelle3.Cells(lzeile, 4).Text)
arrListe(lAnzahl, 4) = CStr(Tabelle3.Cells(lzeile, 11).Text)
arrListe(lAnzahl, 5) = CStr(Tabelle3.Cells(lzeile, 12).Text)
arrListe(lAnzahl, 6) = CStr(Tabelle3.Cells(lzeile, 15).Text)
arrListe(lAnzahl, 7) = CStr(Tabelle3.Cells(lzeile, 16).Text)
arrListe(lAnzahl, 8) = CStr(Tabelle3.Cells(lzeile, 9).Text)
arrListe(lAnzahl, 9) = CStr(Tabelle3.Cells(lzeile, 8).Text)
arrListe(lAnzahl, 10) = CStr(Tabelle3.Cells(lzeile, 25).Text)
arrListe(lAnzahl, 11) = CStr(Tabelle3.Cells(lzeile, 26).Text)
arrListe(lAnzahl, 12) = CStr(Tabelle3.Cells(lzeile, 27).Text)
Next lAnzahl
Me.ListBox1.List = arrListe
Else
Me.ListBox1.Clear
End If
Fehler:
Set col = Nothing
End Sub
Kann mir jemand in diesen Code noch eine Echtzeitsuche für eine Textbox (Volltextsuche) integrieren, die jede Spalte des Arrays durchsucht und dabei auch die Filter mit berücksichtigt? Dann könnte ich dieses leidige Thema endlich abschließen. Prima wäre zb, wenn nach dem 3 Zeichen der Eingabe in der Textbox mit der Suche begonnen wird...
Private Sub Volltextsuche_Change()
'....Hier das Sub für die Volltextsuche....
Call FilterListe
End Sub
Ich hoffe ich konnte es verständlich erklären.
Vielen lieben Dank für Unterstützung.