Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1680to1684
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
Inhaltsverzeichnis

In ListBox1 Eintrag suchen und auswählen/markieren

In ListBox1 Eintrag suchen und auswählen/markieren
26.03.2019 08:36:44
Senad
Guten Tag,
Ich möchte, wie oben beschrieben ein Suchfeld per TextBox (TextBox1) erstellen und per Button den Eintrag markieren, dabei sollen auch nur paar Buchstaben ausreichend sein, sodass man nicht durch die riesen ListBox blättern muss...
Ich habe folgenden Code bisher implementiert, welcher einen RunTime Error 380 verursacht:
Private Sub TextBoxsucheLB_Change()
Dim Suchbegriff As Range
With Range("A1:A" & Range("A65536").End(xlUp).Row)
Set Suchbegriff = .Find(What:=TextBox1, LookIn:=xlValues)
If Not Suchbegriff Is Nothing Then
ListBox1.ListIndex = Suchbegriff.Row - 1
End If
End With
End Sub
Am liebsten hätte ich sogar, dass er beide Spalten meiner ListBox durchsucht, weiss aber nicht wie leicht das umsetzbar ist. Ich verstehe nicht wieso dieser Fehler verursacht wird, da der Code bei anderen Menschen anscheinend tadellos funktioniert.
Ich hoffe mir kann jemand weiterhelfen
Lieben Gruß und vielen Dank im Voraus

31
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In ListBox1 Eintrag suchen und auswählen/markieren
26.03.2019 08:43:18
Torsten
Hallo Senad,
versuchs mal so:
Private Sub TextBoxsucheLB_Change()
Dim liSearch As Integer, liMsg As Integer, liSearch1 As Integer
For liSearch = 0 To ListBox1.ListCount - 1
For liSearch1 = 0 To ListBox1.ColumnCount - 1
If InStr(1, LCase(ListBox1.Column(liSearch1, liSearch)), LCase(TextBoxsucheLB.Text)) _
> 0 Then
ListBox1.ListIndex = liSearch
End If
Next
Next
End Sub
Gruss Torsten
AW: In ListBox1 Eintrag suchen und auswählen/markieren
26.03.2019 08:51:41
Senad
Hey Torsten,
Zunächst vielen Dank, es funktioniert tatsächlich.
Ein Problem ist wohl noch, dass er nun immer den letzten Eintrag markiert, zu dem das Eingegebene passt!
Hättest du da noch eine Idee, ansonsten finde ich es prima. Habe dieses Sub jetzt an den CommandButton gebunden, soweit so gut. Nurnoch, dass er dann nicht den letzten Eintrag markiert, sondern eventuell den ersten und man dann mit den Pfeiltasten weiter runtergehen kann.
Wenn es zu kompliziert ist, wäre ich aber auch mit dieser Lösung absolut einverstanden ansonsten!
Lieben Gruß
Anzeige
Autofilter neu erfunden? (owT)
26.03.2019 08:54:01
EtoPHG

AW: In ListBox1 Eintrag suchen und auswählen/markieren
26.03.2019 08:51:42
Senad
Hey Torsten,
Zunächst vielen Dank, es funktioniert tatsächlich.
Ein Problem ist wohl noch, dass er nun immer den letzten Eintrag markiert, zu dem das Eingegebene passt!
Hättest du da noch eine Idee, ansonsten finde ich es prima. Habe dieses Sub jetzt an den CommandButton gebunden, soweit so gut. Nurnoch, dass er dann nicht den letzten Eintrag markiert, sondern eventuell den ersten und man dann mit den Pfeiltasten weiter runtergehen kann.
Wenn es zu kompliziert ist, wäre ich aber auch mit dieser Lösung absolut einverstanden ansonsten!
Lieben Gruß
AW: In ListBox1 Eintrag suchen und auswählen/markieren
26.03.2019 08:51:44
Senad
Hey Torsten,
Zunächst vielen Dank, es funktioniert tatsächlich.
Ein Problem ist wohl noch, dass er nun immer den letzten Eintrag markiert, zu dem das Eingegebene passt!
Hättest du da noch eine Idee, ansonsten finde ich es prima. Habe dieses Sub jetzt an den CommandButton gebunden, soweit so gut. Nurnoch, dass er dann nicht den letzten Eintrag markiert, sondern eventuell den ersten und man dann mit den Pfeiltasten weiter runtergehen kann.
Wenn es zu kompliziert ist, wäre ich aber auch mit dieser Lösung absolut einverstanden ansonsten!
Lieben Gruß
Anzeige
AW: In ListBox1 Eintrag suchen und auswählen/markieren
26.03.2019 09:13:48
Torsten
Hallo,
tausch diese Zeile

For liSearch = 0 To ListBox1.ListCount - 1
mit dieser:

For liSearch = ListBox1.ListCount - 1 To 0 Step -1
Gruss Torsten
AW: In ListBox1 Eintrag suchen und auswählen/markieren
26.03.2019 09:17:20
Senad
Hey,
Es funktioniert wirklich bestens! Kann man nun ausgehend von dem gewählten / gesuchten Eintrag weitersuchen?
AW: In ListBox1 Eintrag suchen und auswählen/markieren
26.03.2019 09:11:38
Senad
Ich versuche es nochmal auszudrücken:
Am Besten er markiert den ersten Eintrag auf den die Eingabe in der TextBox zutreffend ist und von diesem Eintrag ausgehend sucht er dann weiter, bis kein Eintrag mehr zutreffend ist, entweder gibt er dann eine MsgBox oder er fängt von oben erneut an.
Weiss gerade nicht, wie ich das verständlicher ausdrücken soll! Ich hoffe Ihr versteht. Der Ansatz von Torsten ist schon ganz gut, jedoch leider markiert er dann immer den letzten Eintrag auf den die Eingabe zutreffend ist, es wäre halt schön, wenn der erste übereinstimmende Eintrag markiert und von da ausgehend weitergesucht werden würde usw. usw.
Ich bedanke mich im Voraus und tut mir Leid, falls ich mich unverständlich ausdrücke!
Lieben Gruß erneut
Anzeige
AW: In ListBox1 Eintrag suchen und auswählen/markieren
26.03.2019 11:15:34
Senad
Niemand eine Idee?
Also geht sich nurnoch darum, dass er ab dem gefunden Eintrag weitersucht bis die nächste Übereinstimmung eintritt, ansonsten funktioniert das Makro soweit prima! Hier der Text nochmals:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Suchfunktion nach Stoffbezeichnung
If KeyCode = 13 Then
'Suche durchführen auf Enter:
Dim liSearch As Integer, liMsg As Integer, liSearch1 As Integer
For liSearch = ListBox1.ListCount - 1 To 0 Step -1
For liSearch1 = 0 To ListBox1.ColumnCount - 1
If InStr(1, LCase(ListBox1.Column(liSearch1, liSearch)), LCase(TextBox1.Text)) > 0  _
Then
ListBox1.ListIndex = liSearch
End If
Next
Next
End If
End Sub

Wäre echt cool, wenn diese Funktion noch integriert werden könnte. Ich bedanke mich im Voraus
LG
Anzeige
AW: In ListBox1 Eintrag suchen und auswählen/markieren
26.03.2019 11:38:15
Torsten
Hallo Senad,
wie waere es denn, wenn, anstatt immer weiter zu suchen, gleich alle Treffer markiert werden?
Aber das geht nur mit dem Button. Nicht mit KeyDown.
Dann so:

Private Sub CommandButton1_Click()
Dim Start() As Integer
Dim sString As String
Dim arr
Dim Z As Long
Dim S As Integer
Dim ID
ListBox1.MultiSelect = fmMultiSelectExtended
ListBox1.ListIndex = -1
sString = TextBox1.Text
arr = ListBox1.List
ID = 0
For Z = 0 To UBound(arr)
For S = 0 To UBound(arr, 2)
If UCase(arr(Z, S)) Like "*" & UCase(sString) & "*" Then
ReDim Preserve Start(0 To ID)
Start(ID) = Z
ID = ID + 1
Exit For
End If
Next
Next
For ID = LBound(Start) To UBound(Start)
ListBox1.Selected(Start(ID)) = True
Next ID
End Sub
Gruss Torsten
Anzeige
AW: In ListBox1 Eintrag suchen und auswählen/markieren
26.03.2019 11:53:00
Senad
Hi Torsten, dass wäre leider keine Option, da es sich um chemische Bezeichnungen handelt, Beispiel:
Chlorbenzol
Benzol
Dimethylbenzol
Suchbegriff: Benzol
Die Liste ist sehr groß und zwischen A-Z herrscht in alphabetischer Reihenfolge eine riesige Lücke, die Stoffe haben außer die gleiche Basisstruktur dabei keine Zusammenhänge und es werden mit der Markierung auch CheckBox und ComboBox Einträge geladen, demnach würde MultiSelect keine Lösung darstellen. Ich würde am Liebsten solange Enter drücken bis der gesuchte Suchbegriff auftaucht, falls das möglich ist. Also wie es bisher ist, ist es schon sehr sehr gut, ich kann viel schneller und effizienter meine Begriffe finden und muss nicht die ganze Liste durchscrollen, jedoch, sobald ich "Benzol" o. Ä. suche hängt es beim ersten markierten Eintrag fest - ich denke mal das Makro sucht jedes Mal von oben nach unten, kann man es irgendwie so gestalten, dass es immer vom markierten also ListIndex 0 bis zum nächsten Eintrag sucht? Argh, ich weiss nicht wie ich das umsetze oder korrekt ausdrücken soll
Ich hoffe du verstehst was ich meine und bedanke mich wirklich vielmals für deine Mühe!
Lieben Gruß
Anzeige
AW: In ListBox1 Eintrag suchen und auswählen/markieren
26.03.2019 15:22:35
Senad
Vielleicht gibt es sowas, wie
If Key 13 is pressed again
Loop oder GoTo Step 1 irgendwie sowas? und dann vlt. ListIndex = aktuelle Auswahl als Start?
Ich verzweifel etwas daran, weiss nicht wie ich es umsetzen soll
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 07:55:05
Torsten
Also hallo nochmals Senad,
hat etwas gedauert, was zu basteln.
Hier ein Code, der nach dem ersten Fund fragt, ob weitergesucht werden soll. Also in Textbox 1 den Suchbegriff eingeben und Enter druecken. Der erste Fund wird markiert und es erscheint eine Message Box und fragt, ob weitergesucht werden soll. Entweder wieder Enter (da der "Ja" Button default ist) oder auf "Ja" klicken zum weitersuchen. Wenn nicht weitergesucht werden soll dann auf "Nein".

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Suchfunktion nach Stoffbezeichnung
Dim StrSuch As String, firstadr As String, weiter%
If KeyCode = 13 Then
'Suche durchführen auf Enter:
StrSuch = TextBox1.Text
If StrSuch  "" Then
With Sheets("Sheet2").Range("L2:L20")
Set sucher = .Find(what:=StrSuch, Lookat:=xlPart)
If Not sucher Is Nothing Then
firstadr = sucher.Address
ListBox1.ListIndex = sucher.Row - 2
weiter = MsgBox("Nächste Suchen", 36)
If weiter = 6 Then
Do
Set sucher = .FindNext(sucher)
ListBox1.ListIndex = sucher.Row - 2
weiter = MsgBox("Nächste Suchen", 36)
If weiter = 7 Then Exit Sub
Loop While Not sucher Is Nothing And sucher.Address  firstadr
End If
End If
End With
End If
End If
End Sub
Gruss Torsten
Anzeige
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 07:58:48
Torsten
Achso, hab noch vergessen. Hier:

With Sheets("Sheet2").Range("L2:L20")

musst du natuerlich noch den Tabellennamen und die Range aendern, wo deine Daten, die du in die Listbox laedst, hinterlegt sind.
Habe das hier nur zu Testzwecken benutzt in meinem Sheet.
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 09:32:01
Senad
Hi Torsten, zunächst vielen lieben Dank und wow, weiss garnicht wie ich dir danken soll!
Jedoch verursacht das Makro bei mir einen Fehler in der Zeile:
Set sucher = .Find(what:=StrSuch, Lookat:=xlPart)
Fehler: Variable not defined
Als was soll ich die Variabel definieren?
Lieben Gruß :)
Anzeige
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 09:32:03
Senad
Hi Torsten, zunächst vielen lieben Dank und wow, weiss garnicht wie ich dir danken soll!
Jedoch verursacht das Makro bei mir einen Fehler in der Zeile:
Set sucher = .Find(what:=StrSuch, Lookat:=xlPart)
Fehler: Variable not defined
Als was soll ich die Variabel definieren?
Lieben Gruß :)
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 09:39:13
Senad
Und wäre es auch ohne MsgBox, einfach auf Enter möglich weiterzusuchen? Also die Frage ist nicht zwingend erforderlich, ob weitergesucht werden soll! Vielleicht gibt es ja eine Möglichkeit
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 09:48:08
Senad
Okay, Dim sucher as variant hat Abhilfe geschafft! Jetzt wäre nurnoch das mit der Message Box, könnte man es irgendwie ohne MessageBox umsetzen? Also ohne Abfrage, auf Enter? Ich möchte es quasi ähnlich, wie bei der Word "Textsuche" wo man einfach einen Begriff eingibt und auf Enter weitersucht bis man dort ist wo man sein will
Anzeige
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 09:48:09
Senad
Okay, Dim sucher as variant hat Abhilfe geschafft! Jetzt wäre nurnoch das mit der Message Box, könnte man es irgendwie ohne MessageBox umsetzen? Also ohne Abfrage, auf Enter? Ich möchte es quasi ähnlich, wie bei der Word "Textsuche" wo man einfach einen Begriff eingibt und auf Enter weitersucht bis man dort ist wo man sein will
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 09:48:11
Senad
Okay, Dim sucher as variant hat Abhilfe geschafft! Jetzt wäre nurnoch das mit der Message Box, könnte man es irgendwie ohne MessageBox umsetzen? Also ohne Abfrage, auf Enter? Ich möchte es quasi ähnlich, wie bei der Word "Textsuche" wo man einfach einen Begriff eingibt und auf Enter weitersucht bis man dort ist wo man sein will
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 09:48:12
Senad
Okay, Dim sucher as variant hat Abhilfe geschafft! Jetzt wäre nurnoch das mit der Message Box, könnte man es irgendwie ohne MessageBox umsetzen? Also ohne Abfrage, auf Enter? Ich möchte es quasi ähnlich, wie bei der Word "Textsuche" wo man einfach einen Begriff eingibt und auf Enter weitersucht bis man dort ist wo man sein will
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 09:48:13
Senad
Okay, Dim sucher as variant hat Abhilfe geschafft! Jetzt wäre nurnoch das mit der Message Box, könnte man es irgendwie ohne MessageBox umsetzen? Also ohne Abfrage, auf Enter? Ich möchte es quasi ähnlich, wie bei der Word "Textsuche" wo man einfach einen Begriff eingibt und auf Enter weitersucht bis man dort ist wo man sein will
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 09:48:13
Senad
Okay, Dim sucher as variant hat Abhilfe geschafft! Jetzt wäre nurnoch das mit der Message Box, könnte man es irgendwie ohne MessageBox umsetzen? Also ohne Abfrage, auf Enter? Ich möchte es quasi ähnlich, wie bei der Word "Textsuche" wo man einfach einen Begriff eingibt und auf Enter weitersucht bis man dort ist wo man sein will
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 09:48:13
Senad
Okay, Dim sucher as variant hat Abhilfe geschafft! Jetzt wäre nurnoch das mit der Message Box, könnte man es irgendwie ohne MessageBox umsetzen? Also ohne Abfrage, auf Enter? Ich möchte es quasi ähnlich, wie bei der Word "Textsuche" wo man einfach einen Begriff eingibt und auf Enter weitersucht bis man dort ist wo man sein will
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 09:48:13
Senad
Okay, Dim sucher as variant hat Abhilfe geschafft! Jetzt wäre nurnoch das mit der Message Box, könnte man es irgendwie ohne MessageBox umsetzen? Also ohne Abfrage, auf Enter? Ich möchte es quasi ähnlich, wie bei der Word "Textsuche" wo man einfach einen Begriff eingibt und auf Enter weitersucht bis man dort ist wo man sein will
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 09:48:13
Senad
Okay, Dim sucher as variant hat Abhilfe geschafft! Jetzt wäre nurnoch das mit der Message Box, könnte man es irgendwie ohne MessageBox umsetzen? Also ohne Abfrage, auf Enter? Ich möchte es quasi ähnlich, wie bei der Word "Textsuche" wo man einfach einen Begriff eingibt und auf Enter weitersucht bis man dort ist wo man sein will
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 09:48:14
Senad
Okay, Dim sucher as variant hat Abhilfe geschafft! Jetzt wäre nurnoch das mit der Message Box, könnte man es irgendwie ohne MessageBox umsetzen? Also ohne Abfrage, auf Enter? Ich möchte es quasi ähnlich, wie bei der Word "Textsuche" wo man einfach einen Begriff eingibt und auf Enter weitersucht bis man dort ist wo man sein will
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 09:48:18
Senad
Okay, Dim sucher as variant hat Abhilfe geschafft! Jetzt wäre nurnoch das mit der Message Box, könnte man es irgendwie ohne MessageBox umsetzen? Also ohne Abfrage, auf Enter? Ich möchte es quasi ähnlich, wie bei der Word "Textsuche" wo man einfach einen Begriff eingibt und auf Enter weitersucht bis man dort ist wo man sein will
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 12:42:16
Torsten
krieg ich leider nicht hin
AW: In ListBox1 Eintrag suchen und auswählen/markieren
27.03.2019 12:53:11
Senad
Hey Torsten,
Trotzdem an dieser Stelle vielen vielen lieben Dank. So wie es jetzt im Moment ist, ist es bereits wirklich super und sehr effizient. Bin eigentlich total zufrieden, alles weitere wäre Bonus gewesen!
Hier der fertige Code (ich beginne in Zeile 5, deshalb -5):
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Suchfunktion nach Stoffbezeichnung auf Enter in TextBox1
Dim StrSuch As String, firstadr As String, weiter%, sucher As Variant
If KeyCode = 13 Then
'Suche durchführen auf Enter:
StrSuch = TextBox1.Text
If StrSuch  "" Then
With Sheets("Übersicht").Range("a5:a6000")
Set sucher = .Find(what:=StrSuch, Lookat:=xlPart)
If Not sucher Is Nothing Then
firstadr = sucher.Address
ListBox1.ListIndex = sucher.Row - 5
weiter = MsgBox("Weitersuchen?", 36)
If weiter = 6 Then
Do
Set sucher = .FindNext(sucher)
ListBox1.ListIndex = sucher.Row - 5
weiter = MsgBox("Weitersuchen?", 36)
If weiter = 7 Then Exit Sub
Loop While Not sucher Is Nothing And sucher.Address  firstadr
End If
End If
End With
End If
End If
End Sub
Wirklich vielen Dank nochmals, ist wirklich super so wie es ist!
Alles Gute dir und einen wunderschönen Mittwoch :)!
Super. Und danke fuer die Rueckmeldung
28.03.2019 06:10:42
Torsten
Dir einen schoenen Donnerstag.

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige