Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1640to1644
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Wert einer TextBox suchen
04.09.2018 12:32:56
Steph
Hallo,
ich schon wieder :D
Beim Rumbasteln habe ich gerade festgestellt, dass es keine elegante Lösung ist eine ListBox mit 85 Spalten und 500 Zeilen nach einem bestimmten Wert einer TextBox durchsuchen zulassen. Das habe ich hiermit gemacht:
Private Sub CommandButton_Suchen_Click()
Dim lngRow As Long, lngColumn As Long
Dim blnFound As Boolean
Dim strText As String
strText = TextBox1.Text
With ListBox_Liste
For lngRow = .ListCount - 1 To 2 Step -1
blnFound = False
For lngColumn = 0 To .ColumnCount - 1
If InStr(1, .List(lngRow, lngColumn), strText, vbTextCompare)  0 Then
blnFound = True
Exit For
End If
Next
If Not blnFound Then Call .RemoveItem(lngRow)
Next
End With
End Sub

Die Laufzeit des Makros ist schrecklich lang, teilweise bekommt man deshalb sogar Laufzeitfehler. Daher denke ich, macht es mehr Sinn in der Excel Tabelle direkt mit dem Wert aus der TextBox zu arbeiten und die Zeilen in denen der Wert gefunden wurde in die ListBox zu übergeben.
Hat jemand hier eine Idee für mich? Bei meiner Recherche habe ich nur Makros gefunden, bei denen der Wert der TextBox, nach dme gesucht wird, in einer bestimmten Spalte stehen darf. Bei mir kann der Wert aber in jeder belibigen Spalte stehen.
LG

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert einer TextBox suchen
04.09.2018 12:49:42
daniel
Hi
du kannst ja der Tabelle eine Hilfsspalte anfügen, in welcher du mit ZählenWenn überprüfst, ob der Wert in der jeweiligen Tabellenzeile vorkommt.
wenn du dann die Tabelle nach dieser Spalte sortierst, kannst du die Werte aus der Tabelle auch direkt in die Listbox schreiben.
dh zur Vorbereitung schreibst du in die 86. Spalte eine Formel, welche überprüft ob der gesuchtte Text in der Zeile vorkommt (ZählenWenn), der gesuchte Text steht in der ersten zeile der Spalte (du schreibst ihn später per Code dorthin), die Zeilen die in die Listbox müssen, werden mit 1 gekennzeichnet, Formel hier in Z1S1-Addressierungsart, weil ich keine Lust habe, den Spaltenbuchstaben der 85 Spalte zu ermittlen, du siehst das ja und kannst die Formel normal schreiben.
=Wenn(ZählenWenn(ZS1:ZS85,Z1S85)=0;"";1)
im Code schreibst du dann den Textboxtext in erste Zelle der 86. Spalte, sortierst die Tabelle und übernimmst dann die Zellen mit der Zahl 1 in die Listbox:
Cells(1, 86).Value = Textbox1.Text
If Worksheetfunction.Sum(Columns(86)) > 0 then
Cells(1,1).CurrentRegion.sort Key1:=Cells(2, 86), order1:=xlascending, Header:=xlyes
Listbox_Liste.List = Cells(2, 1).Resize(Worksheetfunction.Sum(Columns(86)), 85)
else
Listbox_Liste.Clear
end if
Gruß Daniel
Anzeige
AW: Wert einer TextBox suchen
04.09.2018 12:53:37
daniel
Hi
du kannst ja der Tabelle eine Hilfsspalte anfügen, in welcher du mit ZählenWenn überprüfst, ob der Wert in der jeweiligen Tabellenzeile vorkommt.
wenn du dann die Tabelle nach dieser Spalte sortierst, kannst du die Werte aus der Tabelle auch direkt in die Listbox schreiben.
dh zur Vorbereitung schreibst du in die 86. Spalte eine Formel, welche überprüft ob der gesuchtte Text in der Zeile vorkommt (ZählenWenn), der gesuchte Text steht in der ersten zeile der Spalte (du schreibst ihn später per Code dorthin), die Zeilen die in die Listbox müssen, werden mit 1 gekennzeichnet, Formel hier in Z1S1-Addressierungsart, weil ich keine Lust habe, den Spaltenbuchstaben der 85 Spalte zu ermittlen, du siehst das ja und kannst die Formel normal schreiben.
=Wenn(ZählenWenn(ZS1:ZS85,Z1S85)=0;"";1)
im Code schreibst du dann den Textboxtext in erste Zelle der 86. Spalte, sortierst die Tabelle und übernimmst dann die Zellen mit der Zahl 1 in die Listbox:
Cells(1, 86).Value = Textbox1.Text
If Worksheetfunction.Sum(Columns(86)) > 0 then
Cells(1,1).CurrentRegion.sort Key1:=Cells(2, 86), order1:=xlascending, Header:=xlyes
Listbox_Liste.List = Cells(2, 1).Resize(Worksheetfunction.Sum(Columns(86)), 85)
else
Listbox_Liste.Clear
end if
Gruß Daniel
Anzeige
AW: Wert einer TextBox suchen
04.09.2018 13:09:34
Steph
Hey Daniel,
ja das ist ein guter Ansatz danke dafür! Allerdings muss dann in der TextBox immer der genaue Wortlaut eingegeben werden. Wenn ich beispielsweise nach "Apfel" suchen will reicht hier "Apf" nicht aus um den Wert und die dazugehörige Zeile zu finden.
LG Steph
AW: Wert einer TextBox suchen
04.09.2018 13:19:06
Rudi
dann eben
=zählenwenn(A2:CG2;"*" &$CH$1 &"*")=0;"";1)
AW: Wert einer TextBox suchen
04.09.2018 14:14:28
Steph
Mhh irgendwie klappt das alles nicht. Nichtmal mein Makro vom Anfang läuft jetzt noch :(
AW: Wert einer TextBox suchen
04.09.2018 14:48:51
Steph
Klappt wieder alles, werde dann jedoch wohl mit der langen Ladezeit leben müssen

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige