Ich brauche mal wieder das Schwarmwissen des Forums. Ich habe eine Tabelle mit zwei Spalten. Die Werte lese ich ein Array ein und möchte jetzt einen Wert suchen und die Position im Array ermitteln. Aber irgendwie will das nicht funktionieren.
Hier mal der Code:
Code:
Sub Suchen()
Dim rngData As Range Dim arr As Variant Dim Row As Variant
Set rngData = Tabelle1.Range("A1").CurrentRegion ReDim arr(1 To rngData.Rows.Count, 1 To rngData.Columns.Count)
arr = rngData.Value
Row = Application.Match("Klaus", arr, 0)
MsgBox CStr(Row)
End Sub
Ich bekomme in Row immer nur den Fehler 2042. Das Array wird richtig eingelesen. Anbei eine Test Tabelle.
wenn Du nur in Spalte A suchen möchtest, dann reicht das hier:
Code:
Sub Suchen() Dim rngData As Range Dim Row As Variant Set rngData = Tabelle1.Columns(1) Row = Application.Match("Klaus", rngData, 0) MsgBox CStr(Row) End Sub
11.01.2025, 03:43 (Dieser Beitrag wurde zuletzt bearbeitet: 11.01.2025, 03:43 von pjo12345.)
Eine Frage bzw. Problem hätte ich noch.
Kann man mit der Match Funktion auch alle gefundenen Übereinstimmungen im Array ermitteln und diese in ein neues Array schreiben?
Also mal angenommen:
A1 = abcd A2 = abc A3 = xyz A4 = yxabc
Suchbegriff abc
Jetzt sollte der Suchbegriff in A1 und A2 gefunden werden. In A3 und A4 sollte nichts gefunden werden.
Meine Tabelle enthält ca. 30.000 Zeilen. DAs Ziel ist eigentlich so eine Art Live-Suche. Also wenn man das erste Zeichen ins Suchfeld eingibt soll gefiltert werden und beim zweiten dann weiter, usw.
@oee Jo das ist genau das was ich gesucht habe. Musste den Code nur ein bisschen anpassen, um meine Tabelle mit 30.000 Zeilen flüssiger zu filtern. Habe die Listbox nach der Schleife mit arr2 befüllt. Klappt hervorragend. Danke.
Code:
Private Sub TextBox1_Change() Dim rng, arr, i, arr2(), lz, txt, le, ii As Integer ReDim arr2(0) ListBox1.Clear 'Nur für Demozwecke lz = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row Set rng = Range("A1:A" & lz) arr = rng.Value txt = TextBox1.Text: le = Len(txt) For i = 1 To UBound(arr) If Left(arr(i, 1), le) = txt Then ' ListBox1.AddItem arr(i, 1) 'Nur für Demozwecke ReDim Preserve arr2(ii) arr2(ii) = arr(i, 1) 'Array mit den Ergebnissen ii = ii + 1 End If Next ListBox1.List = arr2 'Ergebnisse an Listbox übergeben End Sub