Ich habe endlich ein Makro gefunden das die suche so macht wie ich es möchte.
Doch leider wird nur in spalte A Gesucht. Benötigt wird aber Spalte A,B,H bis zeile 5000
Frage: Was muss ich ändern im Makro damit in 3 Spalten gesucht wird?
Dim LoLetzte As Long ' Variable für Letzte Zeile
Private Sub Txt_Ort_Change()
Dim LoI As Long ' Schleifenvariable
Dim LoZeile As Long ' Variable für Zeile in Listbox
Dim RaFound As Range ' Variable für das Suchergebnis
Application.ScreenUpdating = False ' Bildschirmaktualisierung aus
If Txt_Ort = "" Then ' keine Eingabe in der Textbox
' gesamte Liste zuweisen
Lst_Postleitzahlen.RowSource = "A2:B" & LoLetzte
Else
Lst_Postleitzahlen.RowSource = "" ' Adressbreich für Listbox löschen
With Worksheets("FilmDb")
' erste Zeile Suchen
' letzte belegte Zeile unabhängig von Excelversion für Spalte A (1)
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), _
Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
Set RaFound = .Range("A2:A" & LoLetzte).Find(Txt_Ort _
& "*", .Cells(LoLetzte, 1), , xlWhole, , xlNext)
If Not RaFound Is Nothing Then ' Begriff wurde gefunden
' Schleife von gefundener Stelle bis zu letzten Zeile
For LoI = RaFound.Row To LoLetzte
' Prüfen ob Ort noch mit dem Inhalt aus
' der Textbox beginnt
If UCase(Left(.Cells(LoI, 1), Len(Txt_Ort))) _
= UCase(Txt_Ort) Then
' Ort eintragen
Lst_Postleitzahlen.AddItem .Cells(LoI, 1)
' Postleitzahl eintragen
Lst_Postleitzahlen.List(LoZeile, 1) = .Cells(LoI, 2)
LoZeile = LoZeile + 1 ' Zeilennummer um 1 erhöhen
' auskommentiert wegen Umlaute
'Else
'Exit For ' Schleife verlasen
Else
If UCase(Left(.Cells(LoI, 1), 1)) _
UCase(Left(Txt_Ort, 1)) Then
Exit For
End If
End If
Next
End If
End With
End If
Set RaFound = Nothing ' Variable leeren
Application.ScreenUpdating = True ' Bildschirmaktualiserung ein
End Sub
Private Sub UserForm_Initialize()
With Worksheets("FilmDb")
' letzte belegte Zeile unabhängig von Excelversion für Spalte A (1)
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), _
.Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
' Adressbereich der Listbox zuweisen
Lst_Postleitzahlen.RowSource = "A2:b" & LoLetzte
Lst_Postleitzahlen.ColumnCount = 2 ' Spaltenanzahl der Listbox einstellen
End With
End Sub