danke Ralf für den Code.
Der Suchbefehl kann in jeder Zelle in dem Bereich "A7:O" vorkommen. Wenn möglich sogar in der Textmitte.
z.B. in der Zelle von "Adressen" steht "Am Weiherberg 8" Und mein Suchbefehl in Zelle F2 heißt "weiher". Die Komplette Zeile von "A-O" sollte nun in der Listbox angezeigt werden.
Ich bekomme leider immer den Fehler "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs. Hat der Code bei dir funktioniert?
Hab den Code folgendermaßen bei Initialize in der "ListBox1" eingefügt (ohne Änderung):
Private Sub UserForm_Initialize()
Dim Suchbefehl As String
Dim lngTmpZ As Long, lngZeileMax As Long
Dim lngZeile As Long, lngSpalte As Long
Dim arrData, arrtmp
Suchbefehl = ActiveSheet.Range("F2").Value
With Me.ListBox1
.ColumnCount = 15
.ColumnWidths = "120;120;120;120;120;120;120;120;120;120;120;120;120;120;120"
.Font.Size = 14
End With
With Workbooks("Aktuelle Aufträge").Worksheets("Adressen")
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row 'Letzte Zeile
arrData = .Range("A7:O" & lngZeileMax).Value
ReDim arrtmp(1 To UBound(arrData), 1 To UBound(arrData, 2))
For lngZeile = LBound(arrData) To UBound(arrData)
'Startzeile bis Endzeile
If LCase(arrData(lngZeile, 2)) Like "*" & LCase(Suchbefehl) & "*" Then
lngTmpZ = lngTmpZ + 1
For lngSpalte = 1 To UBound(arrData, 2)
arrtmp(lngTmpZ, lngSpalte) = arrData(lngZeile, lngSpalte)
Next
End If
Next lngZeile
arrtmp = Application.Transpose(arrtmp)
ReDim Preserve arrtmp(1 To UBound(arrData, 2), 1 To lngTmpZ)
ListBox1.List = Application.Transpose(arrtmp)
End With
End Sub
|