Thema Datum  Von Nutzer Rating
Antwort
08.06.2024 19:04:02 Lavdrim
NotSolved
08.06.2024 19:45:43 ralf_b
NotSolved
09.06.2024 00:00:16 Gast9190
NotSolved
09.06.2024 02:38:56 ralf_b
Solved
09.06.2024 08:50:58 Alwin Weisangler
Solved
09.06.2024 09:13:20 Alwin Weisangler
Solved
09.06.2024 09:48:12 Lavdrim
NotSolved
09.06.2024 10:31:20 Alwin Weisangler
Solved
09.06.2024 10:54:25 Lavdrim
NotSolved
09.06.2024 11:09:29 Alwin Weisangler
Solved
09.06.2024 11:31:16 Lavdrim
NotSolved
09.06.2024 12:16:17 Alwin Weisangler
Solved
09.06.2024 12:25:32 Alwin Weisangler
Solved
09.06.2024 12:56:27 Gast20705
Solved
Rot Listbox Suchfunktion
09.06.2024 13:08:41 Gast67005
Solved
09.06.2024 13:43:27 Lavdrim
NotSolved

Ansicht des Beitrags:
Von:
Gast67005
Datum:
09.06.2024 13:08:41
Views:
67
Rating: Antwort:
 Nein
Thema:
Listbox Suchfunktion

Mit AddItem klappt es nur mit max. 10 Spalten, also 10 Controls.

Wenn es mit allen Controls funktionieren soll oder nur einer entsprechenden Auswahl an Controls, die 10 übersteigen, braucht es andere Wege:

Vorbereitet für die Abfrage der Tabellenspalten 1,2,3,5,7:

Option Explicit
    Dim arrList()

Private Sub ListboxLaden()
    Dim arrTab(): arrTab = Fahrzeugbestand.ListObjects(1).DataBodyRange.Value
    arrList = Application.Index(arrTab, Evaluate("row(1:" & UBound(arrTab, 1) & ")"), Array(1, 2, 3, 5, 7))
    With ListBoxCar
        .ColumnCount = UBound(arrList, 2)
        .ColumnWidths = Join(Array(80, 70, 80, 90, 150), ";")
        .List = arrList
    End With
End Sub

Private Sub Suchen()
    Dim i&, j&, k&, tmp()
    For i = 1 To UBound(arrList)
        If (Marke = "" Or InStr(1, arrList(i, 1), Marke, vbTextCompare) > 0) _
            And (Model = "" Or InStr(1, arrList(i, 2), Model, vbTextCompare) > 0) _
                And (Erstzulassung = "" Or InStr(1, arrList(i, 3), Erstzulassung, vbTextCompare) > 0) _
                    And (Getriebe = "" Or InStr(1, arrList(i, 4), Getriebe, vbTextCompare) > 0) _
                        And (Kraftstoff = "" Or InStr(1, arrList(i, 5), Kraftstoff, vbTextCompare) > 0) _
        Then
            k = k + 1
        End If
    Next i
    If k = 0 Then
        ListBoxCar.Clear: Exit Sub
    End If
    ReDim tmp(1 To k, 1 To UBound(arrList, 2))
    k = 0
    For i = 1 To UBound(arrList)
        If (Marke = "" Or InStr(1, arrList(i, 1), Marke, vbTextCompare) > 0) _
            And (Model = "" Or InStr(1, arrList(i, 2), Model, vbTextCompare) > 0) _
                And (Erstzulassung = "" Or InStr(1, arrList(i, 3), Erstzulassung, vbTextCompare) > 0) _
                    And (Getriebe = "" Or InStr(1, arrList(i, 4), Getriebe, vbTextCompare) > 0) _
                        And (Kraftstoff = "" Or InStr(1, arrList(i, 5), Kraftstoff, vbTextCompare) > 0) _
        Then
            k = k + 1
            For j = 1 To UBound(tmp, 2)
                tmp(k, j) = arrList(i, j)
            Next j
        End If
    Next i
    ListBoxCar.List = tmp
End Sub

Private Sub Erstzulassung_Change()
    Suchen
End Sub

Private Sub Getriebe_Change()
    Suchen
End Sub

Private Sub Kraftstoff_Change()
    Suchen
End Sub

Private Sub Marke_Change()
    Suchen
End Sub

Private Sub Model_Change()
    Suchen
End Sub

Private Sub UserForm_Initialize()
    ListboxLaden
End Sub

Es ist in jede Richtung anpassbar. Wenn du alle Controls nutzen willst, kannst du das arrList gleich mit dem kompletten Databodyrange des Listobjects füllen.

Dann kann Zeile 6 (Index,Evaluate) entfallen.

Teste und übe in Ruhe und du wirst entdecken wie so was funktioniert.

 

Gruß Uwe


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
08.06.2024 19:04:02 Lavdrim
NotSolved
08.06.2024 19:45:43 ralf_b
NotSolved
09.06.2024 00:00:16 Gast9190
NotSolved
09.06.2024 02:38:56 ralf_b
Solved
09.06.2024 08:50:58 Alwin Weisangler
Solved
09.06.2024 09:13:20 Alwin Weisangler
Solved
09.06.2024 09:48:12 Lavdrim
NotSolved
09.06.2024 10:31:20 Alwin Weisangler
Solved
09.06.2024 10:54:25 Lavdrim
NotSolved
09.06.2024 11:09:29 Alwin Weisangler
Solved
09.06.2024 11:31:16 Lavdrim
NotSolved
09.06.2024 12:16:17 Alwin Weisangler
Solved
09.06.2024 12:25:32 Alwin Weisangler
Solved
09.06.2024 12:56:27 Gast20705
Solved
Rot Listbox Suchfunktion
09.06.2024 13:08:41 Gast67005
Solved
09.06.2024 13:43:27 Lavdrim
NotSolved