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
-
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
-
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ß
-
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
-
Hallo,
habe zwar nicht allzuviel Zeit und kann nix versprechen, aber stelle mal eine Beispieldatei hier rein.
Gruß
-
Hallo
Kein Problem.
Gerne stelle ich dir eine Beispieldatei zur Verfügung.
Es geht um das UserForm "Geräte Abrufen beim Lieferanten"
-
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ß