Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

Listbox Suche erweitern


Betrifft: Listbox Suche erweitern von: Julius van Vern
Geschrieben am: 27.08.2019 14:35:39

Hallo zusammen,

vor kurzen hat mir der User ounor hier weitergeholfen.

Ich möchte nun diese Lösung um einen (ggf später um einen anderen) Punkt erweitern.

Leider Blick ich den Aufbau der Listbox nicht ganz.

Es soll in einer weiteren Spalte nach einem Eintrag gesucht und entsprechende Funde ausgewertet werden.

Ich habe angefangen rum zu probieren, komme aber nicht ganz auf eine Lösung.

Das was ich auskommentiert habe, ist dass was ich dazu gepackt habe.

Wie müsste ich es umstellen, dass ich in der Listbox 3 Spalten habe, deren Inhalt angezeigt wird.

KdNr | Kundenname | Aktion 1 < so müsste es ausschauen.

Vielen Dank

Private Sub SuchText_Change()
    Dim z, Nam, Kud, Akt1
    zl = Sheets("Aktive").UsedRange.Rows.Count
    FoundList.Clear
    With Sheets("Aktive")
    
        For z = 5 To zl
           'Akt1 = .Cells(z, 29).Text ' Spalte Aktion 1
            Nam = .Cells(z, 2).Text ' Zweite Spalte Kundenname
            Kud = .Cells(z, 1).Text ' Erste Spalte Kundennummer
            
            If Nam <> "" Then
                If InStr(1, Nam, SuchText, 1) > 0 Then
                    FoundList.AddItem Cells(z, 1)
                    FoundList.List(FoundList.ListCount - 1, 1) = Cells(z, 2)
                End If
                
'            If Akt1 <> "" Then
'                If InStr(1, Akt1, SuchText, 1) > 0 Then
'                    FoundList.AddItem Cells(z, 29)
'                    FoundList.List(FoundList.ListCount - 1, 29) = Cells(z, 2)
'                End If
                
                
                If Kud <> "" Then
                 If Len(SuchText) > 30 Then SuchText = Left(SuchText, 30)
                    If Left(Kud, Len(SuchText)) = SuchText Then
                    FoundList.AddItem Cells(z, 1)
                    FoundList.List(FoundList.ListCount - 1, 1) = Cells(z, 2)
                End If
                
                    End If
                End If
            'End If
        Next z
    End With
End Sub

  

Betrifft: AW: Listbox Suche erweitern von: Matthias
Geschrieben am: 27.08.2019 15:26:49

Moin!
Ungeprüft könnte es so aussehen.

Private Sub SuchText_Change()
    Dim z, Nam, Kud, Akt1
    zl = Sheets("Aktive").UsedRange.Rows.Count
    FoundList.Clear
    With Sheets("Aktive")
    
        For z = 5 To zl
           'Akt1 = .Cells(z, 29).Text ' Spalte Aktion 1
            Nam = .Cells(z, 2).Text ' Zweite Spalte Kundenname
            Kud = .Cells(z, 1).Text ' Erste Spalte Kundennummer
            Akt1 = .Cells(z, 29).Text 'Name der Aktion Spalte anpassen
            
            If Nam <> "" Then
                If InStr(1, Nam, SuchText, 1) > 0 Then
                    FoundList.AddItem Cells(z, 1)
                    FoundList.List(FoundList.ListCount - 1, 1) = Cells(z, 2)
                    FoundList.List(FoundList.ListCount - 1, 2) = Akt1
                End If
                
                If InStr(1, Akt1, SuchText, 1) > 0 Then
                    FoundList.AddItem Cells(z, 1)
                    FoundList.List(FoundList.ListCount - 1, 1) = Cells(z, 2)
                    FoundList.List(FoundList.ListCount - 1, 2) = Akt1
                End If
                
                
                If Kud <> "" Then
                     If Len(SuchText) > 30 Then SuchText = Left(SuchText, 30)
                        If Left(Kud, Len(SuchText)) = SuchText Then
                        FoundList.AddItem Cells(z, 1)
                        FoundList.List(FoundList.ListCount - 1, 1) = Cells(z, 2)
                        FoundList.List(FoundList.ListCount - 1, 2) = Akt1
                    End If
                
                End If
            End If

        Next z
    End With
End Sub

Frage ist aber, ob der Suchcode ggf. im Name der Aktion und der Nummer gleichzeitig vorkommen kann. Wenn ja, müsstest du den Code umstellen, weil sonst der Eintrag mehrfach erfasst wird. Die LIstbox vorher noch 3-spaltig einstellen.
VG


  

Betrifft: AW: Listbox Suche erweitern von: Julius van Vern
Geschrieben am: 27.08.2019 15:40:56

Hallo Matthias,

vielen Dank für deine Beispiel. Es funktioniert. Es listet mir alle Kunden mit dem ensprechenden Wert aus der Spalte 29 auf. Aber leider wird in der Listbox nur die KdNr. sowie der KdName angezeigt. Reicht es wenn ich quasi drei Listeneinträge erzeuge? So in der Art:

FoundList.List(FoundList.ListCount - 1, 1) = Kud
FoundList.List(FoundList.ListCount - 1, 2) = Nam
FoundList.List(FoundList.ListCount - 1, 3) = Akt1

Oder ist das Quatsch? :D


  

Betrifft: AW: Listbox Suche erweitern von: Matthias
Geschrieben am: 27.08.2019 16:15:36

Moin!
Du hast schon drei Listeinträge. :-) Schaue mal, ob du ggf. bei der Columnswidth der Listbox was stehen hast. Wenn da nur 2 Werte stehen, ist die dritte Spalte ausgeblendet. Dann für die dritte noch einen Wert eintragen.
Die Liste der Listbox ist ein Array, welches nullbasiert ist. Das heißt der erste Eintrag ist in Listbox.list(zeile,0). Das wird standardmäßig bei .add befüllt. Die zweite Spalte dann in .list(zeile,1).
Bei deinem Beispiel hättest du dann also 4 Spalten, da .list(,3) gilt und als zweite Parameter eine 3 steht.
VG


  

Betrifft: AW: Listbox Suche erweitern von: Julius van Vern
Geschrieben am: 28.08.2019 07:50:57

Hallo Matthias,

ich werde bekloppt. Ja das was! :D

Bei CloumnCount war der Wert 2 eingetragen. Nach dem ändern auf 3 hatte ich auch drei Spalten.
Die ColumnWitdth hab ich auch gleich angepasst.

Kann ich die Werte direkt beim aufrufen des Codes übergeben? Sowas wie .columncount = 3 usw? Das wäre doch sicher besser, als wenn ich das nur in den Eigenschaften ändere? Wenn jemand später in den Code schaut, dann weiß er gleich was Phase ist :)

Danke Dir.


  

Betrifft: AW: Listbox Suche erweitern von: Matthias
Geschrieben am: 28.08.2019 10:33:07

Moin!
Eigentlich tut das nicht Not. :-) Aber natürlich kannst du alle Einstellungen der Listbox (Spaltenbreiten und -anzahl usw.) auch zu Laufzeit im Code eintragen/festlegen. Aber wenn es vorher schon eingestellt ist, verhindert man Fehler, wenn jemand am Code was ändert. Alternativ kann man ja einen Kommentar im Code hinterlassen, aus welchem ersichthlich ist, dass die Listbox 3-spaltig ist.
VG


  

Betrifft: AW: Listbox Suche erweitern von: Julius van Vern
Geschrieben am: 28.08.2019 13:37:57

Hi, okay das klingt plausibel. :) Vielen Dank


Beiträge aus den Excel-Beispielen zum Thema "Listbox Suche erweitern"