Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1448to1452
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

Suche in Listbox

Suche in Listbox
05.10.2015 15:39:31
Vic
Hallo an alle,
mit folgendem Code kann ich sehr schön die Listbox1 durchsuchen:
Private Sub BTN_Suche_Click()
Dim liSuche As Integer, liMsg As Integer, liSuche1 As Integer
For liSuche = 0 To ListBox1.ListCount - 1
For liSuche1 = 0 To ListBox1.ColumnCount - 1
If InStr(1, ListBox1.Column(liSuche1, liSuche), TB_Suche.Text) > 0 Then
ListBox1.ListIndex = liSuche
liMsg = MsgBox("Weitersuchen?", vbQuestion + vbYesNo)
If liMsg = vbNo Then Exit Sub
End If
Next
Next
MsgBox "Keine oder keine" & vbCrLf & "weiteren Ergebnisse vorhanden!", vbInformation, "Suche  _
abgeschlossen"
End Sub
Kann das so erweitert werden, dass nur Ergebnisse angezeigt werden, die in Spalte X der Listbox den String "verfügbar" enthalten? Wie immer vielen Dank für die Hilfe!
Vic

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche in Listbox
05.10.2015 19:12:03
Nepumuk
Hallo,
so?
Private Sub BTN_Suche_Click()
    Dim liSuche As Integer, liSuche1 As Integer
    For liSuche = 0 To ListBox1.ListCount - 1
        For liSuche1 = 0 To ListBox1.ColumnCount - 1
            If InStr(1, ListBox1.Column(liSuche1, liSuche), TB_Suche.Text) > 0 Then
                If ListBox1.Column(liSuche1, X) = "verfügbar" Then 'Hier Spaltennummer eintragen
                    ListBox1.ListIndex = liSuche
                    If MsgBox("Weitersuchen?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
                End If
            End If
        Next
    Next
    MsgBox "Keine oder keine" & vbLf & "weiteren Ergebnisse vorhanden!", _
        vbInformation, "Suche abgeschlossen"
End Sub

Gruß
Nepumuk

Anzeige
so gehts leider nicht
06.10.2015 10:40:38
Vic
Hallo und Danke Nepumuk. Leider funktioniert es so nicht oder ich mache einen Denkfehler. Spielt es für die Eingabe der Spaltennummer der Listbox eine Rolle, ob sie ausgeblendet sind (über ColumnWidths in der Eigenschaftsbox auf 0 Pt gesetzt)?
Der Code läuft ohne Fehlermeldung durch, bringt allerdings nicht das gewünschte Ergebnis.
Deinem Beispiel folgend habe ich es mal mit
If InStr(1, ListBox1.Column(liSuche1, 6), TB_Suche2.Text) > 0 Then
versucht. Ebenfalls ohne Fehlermeldung - aber eben auch ohne Ergebnis. Er findet nichts und zeigt die MsgBox an.
Vic

Anzeige
AW: so gehts leider nicht
06.10.2015 10:47:52
Nepumuk
Hallo,
die Spaltenbreite spielt keine Rolle. Kannst du mal eine Mustermappe hochladen?
Gruß
Nepumuk

AW: so gehts leider nicht
06.10.2015 12:13:17
Vic
Danke, soweit es ging entschlackt, im Original ist es deutlich umfangreicher. Das Sheet SIM umfasst etwa 3000 Datensätze.
https://www.herber.de/bbs/user/100616.xlsm
Unabhängig voneinander funktioniert die Suche. Sind beide Suchfelder gefüllt, geht es nicht.
Wäre im Grunde auch ok - in diesem Falle muss ich aber weiter eingrenzen können.
Vic

AW: so gehts leider nicht
06.10.2015 14:46:23
Nepumuk
Hallo,
du suchst den 2. Begriff (aus der Combobox) in der selben Spalte wie z.B. den Namen das kann natürlich nicht funktionieren.
Teste mal das:
Private Sub BTN_Sucheverfuegbar_Click()
    Dim liSuche As Integer, liSuche1 As Integer
    For liSuche = 0 To ListBox1.ListCount - 1
        For liSuche1 = 0 To ListBox1.ColumnCount - 1
            If InStr(1, ListBox1.Column(liSuche1, liSuche), TB_Suche.Text) > 0 Then
                If InStr(1, ListBox1.Column(5, liSuche), CB_Suche.Text) > 0 Or CB_Suche.ListIndex = -1 Then
                    ListBox1.ListIndex = liSuche
                    If MsgBox("Weitersuchen?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
                End If
            End If
        Next
    Next
    MsgBox "Keine oder keine" & vbLf & "weiteren Ergebnisse vorhanden!", _
        vbInformation, "Suche abgeschlossen"
End Sub

Gruß
Nepumuk

Anzeige
AW: so gehts leider nicht
06.10.2015 15:39:25
Vic
Danke für die Mühen Nepomuk!
Wie meinst du das mit der selben Spalte? Ich verstehe es so, das damit
ListBox1.Column(liSuche1, liSuche)

die gesamte Listbox über alle Spalten und Zeilen abgeklappert wird, während mit
ListBox1.Column(5, liSuche)
nur in Spalte 6 gesucht wird. Das wäre genau das, was ich brauche.
Im Ergebnis findet aber auch der Code nicht die entsprechenden Einträge sondern rauscht bei Eingabe in beiden Suchfeldern ohne Fehlermeldung zur MsgBox "Keine oder.... durch.
Lasse ich TB_Suche frei, findet er die Datensätze, arbeitet aber in der next-Schleife die MsgBox("Weitersuchen?",....usw. mehrfach in der selben Zeile (liSuche?) ab.
Gebe ich nur in TB_Suche etwas ein, "findet" er irgendwas, nur hat das nichts mit dem Suchbegriff zu tun. Ich bin komplett ratlos.
Vic

Anzeige
sorry mein Fehler - Danke geht!
06.10.2015 16:10:59
Vic
Vergiss meinen letzten Beitrag, ich habe den falschen Block auskommentiert...
Ergänzt um die Abfrage der Eingabe in TB_Suche funktioniert es nun so wie gewünscht
Private Sub BTN_Suche_Click()
Dim liSuche As Integer, liMsg As Integer, liSuche1 As Integer
If TB_Suche.Text = "" Then
MsgBox "Nichts zum Suchen eingegeben!", vbInformation, "Fehler"
Exit Sub
Else
For liSuche = 0 To ListBox1.ListCount - 1
For liSuche1 = 0 To ListBox1.ColumnCount - 1
If InStr(1, ListBox1.Column(liSuche1, liSuche), TB_Suche.Text) > 0 Then
If InStr(1, ListBox1.Column(5, liSuche), CB_Suche.Text) > 0 Or CB_Suche. _
ListIndex = -1 Then
ListBox1.ListIndex = liSuche
If MsgBox("Weitersuchen?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
End If
End If
Next
Next
MsgBox "Keine oder keine" & vbLf & "weiteren Ergebnisse vorhanden!", _
vbInformation, "Suche abgeschlossen"
End If
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige