Anzeige
Archiv - Navigation
1576to1580
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
Listbox mit gefilterten Daten füllen
06.09.2017 15:19:32
Markus
Hallo,
folgendes Problem.
Ich habe eine Datentabelle (12 Spalten ca.500 Zeilen).
In Spalte J und K stehen jeweils Zahlen. Ist die Zahl in J kleiner als die Zahl in K soll die komplette Zeile in einer Listbox angezeigt werden.
Ich wäre wie folgt vorgegangen.
-Bedingte Formatierung der jeweiligen Zellen z.B. mit Farbe.
-Filtern nach der Farbe über Autofilter
-Mit Click auf einen Commandbutton im Userform die Daten in ein anderes
Tabellenblatt kopieren und dann über Listbox1.Rowsource die Listbox füllen.
Nur ist das leider nicht besonders elegant. Gibt es eine schönere/einfachere Lösung die Listbox zu füllen?
Vielen Dank im Vorraus! =)

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox mit gefilterten Daten füllen
06.09.2017 16:04:13
Markus
Hey Nepumuk,
vielen Dank für den Link, dass sieht sehr gut aus!
Nur leider schaffe ich es hier nicht die Spaltenzahl abzuändern ohne den Laufzeitfehler '9': Index außerhalb des gültigen Bereichs zu fabrizieren.
Meine VBA Kenntnisse sind leider wirklich noch bescheiden =/
Was muss ich genau abändern damit die Spalten B-L in die Listbox übernommen werden?
Viele Grüße
Markus
Anzeige
AW: Listbox mit gefilterten Daten füllen
06.09.2017 16:14:37
Nepumuk
Hallo Markus,
teste mal:
Private Sub UserForm_Activate()
    
    Dim objDataObject As DataObject
    Dim avntInput As Variant, avntRow As Variant
    Dim avntOutput() As Variant
    Dim ialngRow As Long, ialngColumn As Long
    Dim strTemp As String
    
    'Bildschirmaktualisierung ausschalten
    Application.ScreenUpdating = False
    
    'gefilterte Liste ohne Überschriften kopieren
    With Tabelle1.AutoFilter.Range
        Range(.Cells(2, 2), .Cells(.Rows.Count, 12)).Copy
    End With
    
    'neue Instanz des Data-Objektes anlegen
    Set objDataObject = New DataObject
    
    'Inhalt der Zwischenablage in das Data-Objekt holen
    objDataObject.GetFromClipboard
    
    With Application
        
        'Zwischenablage löschen (entfernt den Ameisenrahmen)
        .CutCopyMode = False
        
        'Bildschirmaktualisierung einschalten
        Application.ScreenUpdating = True
        
    End With
    
    'Daten aus dem Data-Objekt in einen String übertragen
    strTemp = objDataObject.GetText
    
    'Data-Objekt zerstören
    Set objDataObject = Nothing
    
    'den letzten Zeilenumbruch entfernen
    strTemp = Left$(strTemp, Len(strTemp) - 2)
    
    'String in Zeilen aufteilen
    avntInput = Split(strTemp, vbCrLf)
    
    'Ausgabearray dimensionieren (die Split-Funktion erzeugt ein 0-basiertes Array)
    Redim avntOutput(0 To UBound(avntInput, 1), 0 To 10)
    
    'Schleife über alle Zeilen
    For ialngRow = 0 To UBound(avntInput)
        
        'Zeile in Spalten aufteilen
        avntRow = Split(avntInput(ialngRow), vbTab)
        
        'Schleife über alle Spalten
        For ialngColumn = 0 To 10
            
            'Daten in das Ausgabearray übertragen
            avntOutput(ialngRow, ialngColumn) = avntRow(ialngColumn)
            
        Next
    Next
    
    'Ausgabearray in die Listbox übertragen
    ListBox1.List = avntOutput
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Listbox mit gefilterten Daten füllen
06.09.2017 16:27:30
Markus
Hey Nepumuk, so funktioniert es, vielen Dank!
AW: oder so:
06.09.2017 15:37:06
Markus
Hallo Klaus,
ich glaube du meinst einen anderen Markus, die Beiträge stammen nicht von mir. ;)
Grüße
Markus
mmmh ...
06.09.2017 15:48:43
KlausF
Du meinst: noch ein Markus mit genau
Excel gut - VBA bescheiden
und
2013 - Office 365
Ist aber wirklich ein großer großer Zufall, oder?
Nun, wenn Du es nicht bist, dann sorry.
Im anderen Fall ...
Gruß
Klaus
AW: mmmh ...
06.09.2017 15:52:42
Markus
Nun ja, es gewinnen ja auch Leute im Lotto, dass ist auch nicht sehr wahrscheinlich.
Aber ich kann deinen Unmut verstehen. Ein einfaches Danke ist wirklich nicht zuviel verlangt.
Grüße
Markus
AW: Listbox mit gefilterten Daten füllen
06.09.2017 16:14:48
Daniel
HI
man kanns auch andersrum machen:
lese zuerst alle Daten in die Listbox ein:
Listbox1.List = Range(...).Value
dann läufst du mit einer Schleife rückwärts durch die Liste und löschst die nicht benötigten Daten:
with Listbox1
for Z = .Listcount - 1 to 0 Step -1
if CDbl(.List(Z, 9)) >= CDbl(.List(Z, 10)) Then .RemoveItem Z
next
End with
Gruß Daniel
Anzeige
AW: Listbox mit gefilterten Daten füllen
06.09.2017 16:37:36
Markus
Hi Daniel,
das klingt richtig gut =)
Nur wie muss ich die Variablen deklarieren?
Bei .Listcount kommt die Fehlermeldung "Unzulässiger oder nicht ausreichend definierter Verweis".
Viele Grü0e
AW: Listbox mit gefilterten Daten füllen
06.09.2017 17:37:25
Daniel
Hi
Variable ist nur Z as Long
vor .ListCount und .List musst du den Namen der Listbox hinschreiben, oder wenn du mit der WITH-Klammer arbeitest, die Listbox dort entsprechend angeben (wie in meinem Beispielcode)
der Listboxname muss natürlich der sein, den du in deinem Projekt vergeben hast.
Steht der Code nicht im Modul der Userform/Formular, musst du zusätzlich vor der Listbox den userformnamen angeben: With Userform1.Listbox1
Gruß Daniel
Anzeige
AW: Listbox mit gefilterten Daten füllen
07.09.2017 09:25:48
Markus
Hi,
vielen Dank! Funktioniert nun wunderbar.
Hatte nur in einer Zelle Text stehen, daher kam der Fehler.
Grüße
Markus

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige