ich arbeite momentan an einer Userform zur übersichtlichen Darstellung einer Projektdatenbank. Diese Datenbank besteht aus Projekten, die sich jeweils in unterschiedlichen Stadien befinden. Jedes Stadium hat dabei ein eigenes Tabellenblatt.
Bis jetzt läuft es mit der Userform sehr gut, ich kann Projekte anzeigen / bearbeiten und in den jeweiligen Stadien umherverschieben lassen. Jetzt möchte ich eine Stufe weitergehen und eine Suche einbauen - hier hakt es und ich weiß nicht, warum.
So sieht meine Userform aus: https://i.imgur.com/EUhgp8s.png
Folgenden Code habe ich nun bei der txt_Suche als change hinterlegt, um jeweils in Spalte B jedes Blattes (dort stehen die Projektkürzel) zu suchen und diese Projektkürzel in die Listbox (lst_Projekt_Anfragen) zu speichern:
Private Sub txt_Suche_Change()
Dim wb As Workbook, shanfrage As Worksheet
Dim suchtext As Variant, i As Integer
'Liste leeren
Me.lst_Projekt_Anfragen.Clear
'Suche in allen Tabellenblättern nach Übereinstimmungen, sobald 3 Zeichen eingegeben wurden
If Len(txt_Suche.Value) > 2 Then
For i = 2 To Sheets.Count
Set suchtext = Sheets(i).Range("B:B").Find(What:=txt_Suche.Value, Lookat:=xlPart, LookIn:= _
xlValues)
Next i
Do While suchtext >= 1
Me.lst_Projekt_Anfragen.AddItem suchtext
i = i + 1
Loop
End If
End Sub
Ich erhalte ohne die Längen-Beschränkung eine Fehlermeldung "Überlauf", was wohl darauf zurückzuführen ist, dass er zuviele Daten laden muss. Wenn ich die Längenbeschränkung eingebe und bspw. nach "MRP" suche (das Projekt gibt es auf jeden Fall) erhalte ich in der Zeile
Do While suchtext >= 1
den Laufzeitfehler 91, die Objektvariable oder With-Blockvariable sei nicht festgelegt. Ich tüftel da nun schon eine ganze Weile dran herum, kann aber auch im Internet keinen passenden Code finden, der mir weiterhelfen würde. Die meisten suchen innerhalb einer vorhandenen Listbox - ich möchte die Listbox aber mit den Suchergebnissen aus der Textbox füllen.
Kann mir hier eventuell jemand weiterhelfen, woran der Code scheitert, ob die Suche so überhaupt funktionieren kann, oder ob ich völlig falsch liege?