641 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Zusammen

Folgendes Problem
Ich habe ein Tabellenblatt mit 5 Spalten.
Nun versuche ich via TextBox die entsprechenden Zeilen zu finden. Je mehr TextBoxen (5) ich mit Suchkriterien bestücke, desto genauer sollte die Trefferquote in der Listbox sein. Wo habe ich den Fehler in meiner Formel?


Private Sub cmdSuchen_Click()
Dim Ing As Long
Dim i As Integer

Application.ScreenUpdating = False

With frm_Daten
.ListBox1.Clear
Sheets("Adressliste").Activate
i = 0

For Ing = 3 To ActiveSheet.UsedRange.Rows.Count
If InStr(LCase(Cells(Ing, 1).Value), LCase(.TextBox1.Value)) > 0 Then
.ListBox1.AddItem Cells(Ing, 1).Value
.ListBox1.Column(1, i) = Cells(Ing, 2).Value
.ListBox1.Column(2, i) = Cells(Ing, 3).Value
.ListBox1.Column(3, i) = Cells(Ing, 4).Value
.ListBox1.Column(4, i) = Cells(Ing, 5).Value
.ListBox1.Column(5, i) = Ing
i = i + 1
Else
End If
Next Ing

End With

frm_Daten.Label42.Caption = frm_Daten.Label42.Caption
frm_Daten.Label43.Caption = frm_Daten.Label43.Caption
frm_Daten.Label44.Caption = frm_Daten.Label44.Caption
frm_Daten.Label45.Caption = frm_Daten.Label45.Caption
frm_Daten.Label46.Caption = frm_Daten.Label46.Caption

Application.ScreenUpdating = True

End Sub


Danke für die Hilfe im voraus

3 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

welche Formel meinst du? Oder meinst du den Code insgesamt?

Im Moment prüfst du ja nur, ob der Inhalt von Textbox1 in Spalte A des Arbeitsblatts "Adressliste" gefunden wird. Eine Suche nach dem Inhalt der übrigen Textboxen findet gar nicht statt.

Gruß

M.O.
0 Punkte
Beantwortet von
Hi,

davon ausgehend, dass deine Textboxen Textbox1 bis 5 lauten sehe ich keinen Fehler in deinem Code. Du musst nur die If-Bedingung verfeinern.

Ersetze dazu die Zeile If InStr(LCase(Cells(Ing, 1).Value), LCase(.TextBox1.Value)) > 0 Then durch dieses etwas längere Monstrum:
If (InStr(1, LCase(Cells(Ing, 1).Value), LCase(.TextBox1.Value)) > 0 Or .TextBox1.Value = "") _
And (InStr(1, LCase(Cells(Ing, 2).Value), LCase(.TextBox2.Value)) > 0 Or .TextBox2.Value = "") _
And (InStr(1, LCase(Cells(Ing, 3).Value), LCase(.TextBox3.Value)) > 0 Or .TextBox3.Value = "") _
And (InStr(1, LCase(Cells(Ing, 4).Value), LCase(.TextBox4.Value)) > 0 Or .TextBox4.Value = "") _
And (InStr(1, LCase(Cells(Ing, 5).Value), LCase(.TextBox5.Value)) > 0 Or .TextBox5.Value = "") Then

in meinen Tests hat dies funktioniert das sehr gut. Sollte es bei dir nicht klappen, stell doch mal eine Datei mit Beispieldaten auf einem Filhoster deiner Wahl bereit.

Gruß Mr. K.
0 Punkte
Beantwortet von
Hi Mister K.

Habe Dich nicht vergessen, warte noch auf das Aktivierungsmail. Wollte nicht automatisch den Weg zu mir
finden.
Dein Code hat Super hingehauen. Genau das hatte ich gesucht. Danke Dir ganz herzlich für Deine Arbeit


Auch Dir M.O. Möchte ich danken, dass Du Dich um mein Problem bemüht hast.
Top Leute hier
...