AW: Erweiterung alle Spalten
26.09.2021 17:48:10
Thomas
Hallo Excelfreunde,
erstmal rechtvielen dank für eure Lösungsvorschläge.
Leider ist dies noch nicht das gesuchte.
Ich möchte gern mit der Textbox6 die komplette Listbox durchsuchen.
Z.B. nach den Begriff " Thomas". Alle gefundenen Zeilen sollen dann in der Listbox erscheinen.
Anschließend möchte ich gern mit den restlichen TextBoxen die suche Spaltenweise verfeinern.
Mein derzeitiger Stand ist:
Sub suchen()
' Achtung dies Option Compare Text gehört mit dazu
'https://www.ms-office-forum.net/forum/showthread.php?t=268236
'ransi
Dim strRef As String
Dim i, j, k, l
Dim bValid As Boolean
Dim out()
Const LetzteSpalte = 24 '24: Spalte X
Application.ScreenUpdating = False
Application.EnableEvents = False
'Application.Calculation = xlCalculationManual
Worksheets("Filtertabelle").Cells.ClearContents
ReDim out(1 To LetzteSpalte, 1 To 1)
'Herstellung der Kombinationen
'For i = 1 To 4
strRef = Kombiniere(strRef, Kunden_suchen_2.Controls("TextBox" & 6).Text)
'Next
With Worksheets("Kundendaten")
For l = 3 To .Range("A99999").End(xlUp).Row
'Prüfung der aktuelle Zeile gegen alle Kombination
' If strRef = "*;*;*;*;*" Then 'Verkürzung: keine Filterung
' bValid = True
' Else
' bValid = False
For Each E In Split(strRef, "|") ' alle Kombinationen einzel durchgehen
Liste = Split(";" & E, ";")
For g = 1 To 1
bValid = LCase(.Cells(l, g).Value) Like LCase(Liste(g))
Next
'If bValid Then Exit For 'Ist eine Kombi gültig, spart man sich den Rest
' Next ' next5 war hier
' End If
If bValid Then
k = k + 1
ReDim Preserve out(1 To LetzteSpalte, 1 To k + 1)
For i = 1 To LetzteSpalte
out(i, k) = .Cells(l, i).Value
Next
End If
Next ' next5 war hier
Next
End With
Suchergebnisse_suchen_2.Clear
Suchergebnisse_suchen_2.List = WorksheetFunction.Transpose(out)
Application.ScreenUpdating = True
Application.EnableEvents = True
'Application.Calculation = xlCalculationManual
End Sub
Function Kombiniere(ByVal Basis, Neue) As String
Dim E, B
Dim tmp
Const cAB = "@@@@@" 'Ausnahme-Blocker
If Basis = "" Then Basis = cAB
For Each B In Split(Basis, "|")
B = IIf(B = cAB, "", B & ";")
If Neue = "" Then Neue = cAB
For Each E In Split(Neue, ";")
E = IIf(E = cAB, "*", E & "*")
tmp = tmp & "|" & B & E
Next
Next
Kombiniere = Mid(tmp, 2)
End Function
Mit diesen Zeilen
For g = 1 To 1
bValid = LCase(.Cells(l, g).Value) Like LCase(Liste(g))
Next
kann ich schon mal die erste Spalte gezielt ansprechen. Sobald ich jedoch aus der eins eine andere Zahl mache erscheint immer
die Meldung " Index außerhalb des gültigen Bereichs"
An welcher Stelle muss ich den Bereich erweitern?
Oder liege ich komplett daneben?
mfg Thomas