Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1640to1644
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

Mehrere Zeilen in Listbox mit Rowsource

Mehrere Zeilen in Listbox mit Rowsource
31.08.2018 09:59:44
Felix
Hallo VBA-Experten,
meine Ausgangssituation ist folgende:
Ich habe eine Tabelle mit 24 Spalten. Die Zeilen sollen fortlaufend beschrieben werden.
Ich möchte nun ein UserForm mit einer Listbox aufrufen, in der ich nach einer bestimmten Nummer (in Spalte E) suche und mir dann alle Zeilen, die diese Nummer enthalten ausgeben lassen. Es sollen auch alle 24 Spalten ausgegeben werden, wodurch die .AddItem Funktion ja wegfällt.
Das UserForm besteht nur aus der Listbox und einem Button, der die Suchprozedur auslösen soll.
Mein Versuch mit Rowsource:
Private Sub CommandButton1_Click()
Dim rngCell As Range
Dim strFirstAddress As String
With Worksheets("Tabelle1").Range("E:E")
Me.ListBox1.Clear
Set rngCell = .Find(Me.TextBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not rngCell Is Nothing Then
strFirstAddress = rngCell.Address
Do
With Me.ListBox1
'.ColumnHeads = True
.ColumnWidths = "1,7cm;2cm;0,5cm"
.ColumnCount = Tabelle1.Range("A1:X1").Columns.Count
.RowSource = Tabelle1.Range(Cells(rngCell.Row, 1), Cells(rngCell.Row, 24)).Address
End With
Set rngCell = .FindNext(rngCell)
Loop While Not rngCell Is Nothing And rngCell.Address  strFirstAddress
Else
MsgBox "Nicht gefunden", 48
End If
End With
End Sub
Er findet so leider immer nur die letzte Zeile mit der gesuchten Nummer. Meine Überlegung war jetzt, im Loop ein Array zu befüllen, welches nach dem Verlassen des Loops dann irgendwie .rowsource bedient, so dass alle gesuchten Zeilen in der Listbox sichtbar werden. Leider habe ich keine Ahnung, wie ich das Umsetzen kann. Bin auch gerne für andere Lösungen offen, die mich zum Ziel bringen.
Viele Grüße
Felix

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Zeilen in Listbox mit Rowsource
31.08.2018 10:14:58
Daniel
Hi
AddItem geht bei 24 Spalten nicht, aber RemoveItem
Dh du schreibst alle Werte in die Listbox:
Listbox1.List = Range("A1:X999").Value

Dann läufst du mit einer Schleife rückwärts durch die Listbox und löschst die nicht benötigten Zeilen
For i = Listbox1.ListCount - 1 to 0 Step -1
If listbox1.list(i, 4)  Textbox1.Text then Listbox1.RemoveItem i
Next
Gruß Daniel
AW: Mehrere Zeilen in Listbox mit Rowsource
31.08.2018 10:37:02
Felix
Hallo Daniel,
danke für deinen Beitrag. Ich hab deinen Code eingebaut, jedoch gibt er mir nur Spalte A in der Listbox aus und ich glaube, dass der Rechenaufwand für erst Reinladen und dann einzeln Rausschmeißen doch sehr groß ist.
Später soll die Quelltabelle aus einer anderen Datei kommen und soll täglich ca. 80 neue Zeilen dazubekommen. Mit jährlicher Reinigung wären dies ca. 25000 Einträge pro Jahr.
Viele Grüße
Felix
Anzeige
AW: Mehrere Zeilen in Listbox mit Rowsource
31.08.2018 12:50:20
Daniel
hi
naja, mein Code ist ja nur rudimentär, dh das anpassen an die Anzahl der Spalten und -breiten musst du natürlich noch selber hinzufügen.
bei größeren Datenmengen könntest du auch so vorgehen:
1. Haupttabelle nach der Kritieriumsspalte sortieren, so dass alle anzuzeigenden Werte direkt untereinander stehen
2. suche die erste Zeile mit dem Suchbegriff(z.b. FIND)
3. suche die letzte Zeile mit dem Suchbegriff (z.B. FIND mit Searchdirection:=xlprevious)
4. übernehme alle dazwischenliegenden Zeilen in die Listbox. Da die anzuzeigenden Zeilen einen lückenlosen Block bilden, kannst du das dann auch wieder über die RowSource erledigen.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige