Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: rizzo91 am April 28, 2018, 13:48:40 Nachmittag

Titel: Office 2013: Einen FIlter in der ListBox anwenden
Beitrag von: rizzo91 am April 28, 2018, 13:48:40 Nachmittag
Liebe Community

Ich verzweifle fast an der ListBox... Ich hoffe Ihr könnt mir weiterhelfen Smile

Ausgangslage:

Ich habe ein UserForm mit einer Combobox, welches wenn dies ausgewählt wird soll es den Wert in einem Tabellenblatt suchen und anschliessend den gefundenen Wert inkl. 4 weitere Werte in der geleichen Spalte in die ListBox schreiben. Nun brauche ich gewisse Zeilen nicht welche jedoch die die Combobox Value enthalten ist. Darum möchte ich einen AutoFilter einbauen.

Ungefähr so...

Listbox

column 1 ¦ column 2 ¦ column 3 ¦ column 4 ¦ column 5 ¦
---------------------------------------------------------------------
Such erg. ¦ wert       ¦ wert        ¦ wert        ¦ wert       
       ¦            ¦
       ¦            ¦
       ¦             > Beim Column 2 möchte ich gerne einen filter, dass nur das angezeigt wird welches einen Wert enthält ?
       > Hier möchte ich, dass es eindeutig den Wert sucht und findet? im Moment kommt alles was mit diesem Wert vorkommt. vom ganzen Tabellenblatt obwohl ich die range definiert habe


Mein Code sieht wie folgt aus:

Private Sub ComboBox1_change()
 
 Dim s As String
 Dim Found As Range
 Dim FirstAddress As String
 Dim I As Integer ' Zeile
 On Error Resume Next
 I = 0
 
 s = Trim(ComboBox1.Value) 'Sucheingabe über ComboBox1 steuern
 If s = "" Then Exit Sub
 ListBox2.Clear
 With Worksheets("Bestellübersicht").Range("B:B")
  Set Found = .Cells.Find(what:=s, LookAt:=xlPart)
 
  If Not Found Is Nothing Then
    FirstAddress = Found.Address
    ListBox2.ColumnCount = 5 'Gibt die Werte der gefundenen Treffer an (Spaltenbezogen)
    Do
      ListBox2.AddItem Found
      ListBox2.List(I, 1) = Cells(Found.Row, 24)
      ListBox2.List(I, 2) = Cells(Found.Row, 6)
      ListBox2.List(I, 3) = Cells(Found.Row, 9)
      ListBox2.List(I, 4) = Cells(Found.Row, 10)
      Set Found = Cells.FindNext(after:=Found)
      If Found.Address = FirstAddress Then Exit Do
      I = I + 1
    Loop
  End If
  End With
End Sub

Ich danke euch schon im Voraus für eure Hilfe.
Cheers rizzo91
Titel: Antw:Office 2013: Einen FIlter in der ListBox anwenden
Beitrag von: maninweb am April 28, 2018, 14:12:16 Nachmittag
Hallo,

Du könntest wie folgt vorgehen:

- Lese die betroffene Range als Array ein, z.B. myData = ....Range("A1:D1000").Value
- Durchlaufe das Array in einer Schleife (For Next, kein Do While), prüfe den Wert in myData(n,1)
- Trifft der Wert auf den Filter zu, kannst Du die Zeile der Listbox hinzufügen, Listbox.AddItem, Listbox.List(Listbox.ListCount-1,2) = myData(n,2) usw...

Gruß
Titel: Antw:Office 2013: Einen FIlter in der ListBox anwenden
Beitrag von: rizzo91 am April 28, 2018, 14:24:12 Nachmittag
Hallo maniweb

Besten Dank für deine Antwort.

Da ich noch ein ziemlicher Excel VBA Anfänger bin, weiss ich nicht genau was ich nun tun soll respektive wie ich den Code zusammen schreiben soll.
Kannst du mir hier eventuell etwas zusammen basteln? falls du noch mehr Informationen brauchst, kann ich dir diese gerne zukommen lassen

Danke & Gruss
rizzo91
Titel: Antw:Office 2013: Einen FIlter in der ListBox anwenden
Beitrag von: maninweb am April 28, 2018, 14:52:15 Nachmittag
Hallo,

habe zwar nicht allzuviel Zeit und kann nix versprechen, aber stelle mal eine Beispieldatei hier rein.

Gruß
Titel: Antw:Office 2013: Einen FIlter in der ListBox anwenden
Beitrag von: rizzo91 am April 28, 2018, 14:56:59 Nachmittag
Hallo

Kein Problem.

Gerne stelle ich dir eine Beispieldatei zur Verfügung.

Es geht um das UserForm "Geräte Abrufen beim Lieferanten"
Titel: Antw:Office 2013: Einen FIlter in der ListBox anwenden
Beitrag von: maninweb am April 28, 2018, 15:15:38 Nachmittag
Hallo,

ich mag keine Crosspostings ohne Link-Angabe und bin wieder raus: http://www.clever-excel-forum.de/thread-15401.html (http://www.clever-excel-forum.de/thread-15401.html)

Gruß