Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Begriff in ListBox suchen

Begriff in ListBox suchen
27.05.2008 13:32:00
otto
Hi,
kann man einen beliebigen Begriff suchen, der irgendwo in der Listbox steht?
habe im Netz diesen Code gefunden, funktioniert aber nicht so richtig.

Private Sub TextBoxsucheLB_Change()
Dim i As Integer
With ListBox1
For i = 0 To .ListCount - 1
If Not InStr(.List(i), TextBoxsucheLB.Text) = 0 Then
.Selected(i) = True
End If
Next
End With
End Sub


Gruß
otto

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Begriff in ListBox suchen
27.05.2008 13:40:44
Rudi
Hallo,

funktioniert aber nicht so richtig


Was?
Gruß
Rudi

AW: Begriff in ListBox suchen
27.05.2008 14:28:56
otto
Hi,
es durchsucht nur die 1. Spalte, meine LB hat aber 10.
so gehts jetzt:

Private Sub TextBoxsucheLB_Change()
Dim i As Integer, ii As Integer
For i = 0 To ListBox1.ListCount - 1
For ii = 0 To ListBox1.ColumnCount - 1
If ListBox1.List(i, ii) = TextBoxsucheLB.Text Then
ListBox1.Selected(i) = True
End If
Next
Next
End Sub


Wie schaffe ich es aber nun, dass es auch einen Teil des Begriffes in der LB findet?
z.B. in LB steht: 2.2 (13485) als Suchbegriff gebe ich aber nur 13485 ein.
Aber bitte nicht mit Like, da stört mich, dass ich Sternchen eingeben muss.
Gruß
otto

Anzeige
AW: Begriff in ListBox suchen
27.05.2008 14:36:00
Rudi
Hallo,
mit InStr wie es vorher war.
Gruß
Rudi

AW: Begriff in ListBox suchen
27.05.2008 14:49:00
otto
Hi,
Danke, funzt.
Geht aber viel langsamer.

Private Sub TextBoxsucheLB_Change()
Dim i As Integer, ii As Integer
For i = 0 To ListBox1.ListCount - 1
For ii = 0 To ListBox1.ColumnCount - 1
If InStr(ListBox1.List(i, ii), TextBoxsucheLB.Text) Then
ListBox1.Selected(i) = True
End If
Next
Next
End Sub


Hast du noch ne Idee?
gruß
otto

Anzeige
AW: Begriff in ListBox suchen
27.05.2008 15:34:42
Rudi
Hallo,
geht schneller:

Private Sub TextBoxsucheLB_Change()
Dim i As Integer, ii As Integer
Dim vntList, strTxt As String, arrSelected()
strTxt = LCase(TextBoxsucheLB)
vntList = ListBox1.List
ReDim arrSelected(ListBox1.ListCount - 1)
For i = 0 To ListBox1.ListCount - 1
For ii = 0 To ListBox1.ColumnCount - 1
arrSelected(i) = InStr(LCase(vntList(i, ii)), strTxt) > 0
If arrSelected(i) Then Exit For
Next
Next
With ListBox1
For i = 0 To .ListCount - 1
.Selected(i) = arrSelected(i)
Next
End With
End Sub


Gruß
Rudi

Anzeige
Erledigt - mit Exit Ereignis OK - o.w.T.
27.05.2008 15:24:12
otto
;
Anzeige
Anzeige

Infobox / Tutorial

Begriff in ListBox suchen


Schritt-für-Schritt-Anleitung

Um einen Begriff in einer ListBox in Excel VBA zu suchen und anzuzeigen, befolge diese Schritte:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Füge eine UserForm hinzu: Klicke mit der rechten Maustaste auf das Projekt und wähle "Einfügen" > "UserForm".
  3. Füge eine ListBox und eine TextBox hinzu: Ziehe eine ListBox (ListBox1) und eine TextBox (TextBoxsucheLB) in die UserForm.
  4. Füge den folgenden Code in das Codefenster der UserForm ein:
Private Sub TextBoxsucheLB_Change()
    Dim i As Integer, ii As Integer
    Dim vntList, strTxt As String, arrSelected()

    strTxt = LCase(TextBoxsucheLB.Text)
    vntList = ListBox1.List
    ReDim arrSelected(ListBox1.ListCount - 1)

    For i = 0 To ListBox1.ListCount - 1
        For ii = 0 To ListBox1.ColumnCount - 1
            arrSelected(i) = InStr(LCase(vntList(i, ii)), strTxt) > 0
            If arrSelected(i) Then Exit For
        Next
    Next

    With ListBox1
        For i = 0 To .ListCount - 1
            .Selected(i) = arrSelected(i)
        Next
    End With
End Sub
  1. Starte die UserForm: Schließe den Editor und starte die UserForm, um die Funktion zu testen.

Häufige Fehler und Lösungen

  • Fehler: Nichts wird angezeigt
    Lösung: Stelle sicher, dass die ListBox Items enthält und der Suchbegriff korrekt eingegeben wurde.

  • Fehler: Suche funktioniert nur in der ersten Spalte
    Lösung: Verwende den überarbeiteten Code, der alle Spalten der ListBox durchsucht (siehe Schritt-für-Schritt-Anleitung).

  • Fehler: Langsame Suche
    Lösung: Optimiere den Code, indem du die Suche auf die benötigten Spalten begrenzt oder die Suchmethode anpasst.


Alternative Methoden

  • Verwendung von Like: Wenn du bereit bist, Wildcards zu verwenden, kannst du die Like-Anweisung anstelle von InStr verwenden, um flexiblere Suchmuster zu ermöglichen.

  • Daten filtern: Anstatt die ListBox zu durchsuchen, kannst du auch die Datenquelle filtern, bevor du sie in die ListBox lädst.


Praktische Beispiele

Hier ist ein Beispiel, wie du die ListBox mit Daten füllst und die Suche implementierst:

Private Sub UserForm_Initialize()
    ListBox1.ColumnCount = 2
    ListBox1.AddItem "1. Beispiel (12345)"
    ListBox1.AddItem "2. Beispiel (67890)"
    ListBox1.AddItem "3. Beispiel (13579)"
End Sub

Mit diesem Code werden die Daten beim Laden der UserForm in die ListBox eingefügt.


Tipps für Profis

  • Verwende LCase: Um die Suche nicht fallunterscheidend zu gestalten, verwende LCase für sowohl die Eingabe als auch die ListBox-Daten.

  • Optimierung: Reduziere die Anzahl der durchsuchten Spalten, um die Leistung zu verbessern, insbesondere bei großen Datenmengen.

  • Event-Handling: Implementiere ein Exit-Ereignis, um die Suche nur zu aktivieren, wenn der Benutzer die Texteingabe abgeschlossen hat.


FAQ: Häufige Fragen

1. Frage
Wie kann ich die Suche auf eine bestimmte Spalte der ListBox beschränken?
Antwort: Du kannst die Schleife für die Spaltenanzahl auf die gewünschte Spalte anpassen, indem du For ii = 0 To 0 verwendest, um nur die erste Spalte zu durchsuchen.

2. Frage
Kann ich die Suche auch für ComboBoxen verwenden?
Antwort: Ja, die Logik ist ähnlich. Du kannst die Suche in einer ComboBox implementieren, indem du den entsprechenden Code anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige