Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

per Listbox mit MultiSelect Zeilen ausblenden

Forumthread: per Listbox mit MultiSelect Zeilen ausblenden

per Listbox mit MultiSelect Zeilen ausblenden
11.08.2016 14:00:06
Ledi
Hallo,
ich habe ein bislang unlösbares Problem.
Und zwar habe ich eine Excel-Datei mit einem Tabellenblatt indem in Spalte A Zeile 4-115 Wörter stehen. Diese Wörter sollen in eine Listbox auf einer Userform eingespielt werden.
In der Listbox soll der User über Multiselect die Wörter bzw. Zeilen ein-/ausblenden können. Sobald er ein Haken bei einem Wort setzt, wird die entsprechende Zeile nicht ausgeblendet. Alle Zeilen ohne das Häkchen sollen ausgeblendet werden.
Ich hoffe jemand hat hierzu eine Lösung.
Vielen lieben Dank vorab.
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Mein bisheriger Code
11.08.2016 14:10:52
Ledi
Das ist der Code zum befüllen - er berücksichtigt dass es jeweils 2 verbundene Zellen sind also ind Spalte A sind 4und5, 6und7,8und9, usw. miteinander verbunden.
Private Sub UserForm_Initialize()
Dim L As Long
For L = 4 To 115
If Sheets("Vergleich").Cells(L, 1)  "" Then _
ListBox1.AddItem Sheets("Vergleich").Cells(L, 1)
Next
End Sub

Anzeige
AW: Mein bisheriger Code
11.08.2016 14:35:59
Rudi
Hallo,
dass es jeweils 2 verbundene Zellen sind
dann aber lückenlos?
for i = 0 to listbox1.listcount-1
sheets("vergleich").rows(i*2+4).resize(2).hidden = not listbox1.selected(i)
next i

Gruß
Rudi
AW: Mein bisheriger Code
11.08.2016 15:42:25
snb

Private Sub UserForm_Initialize()
ListBox1.list= Sheets("Vergleich").columns(12).specialcells(2).offset(3).specialCells(2). _
value
End Sub

Anzeige
AW: Mein bisheriger Code
12.08.2016 11:33:25
Ledi
Hallo,
also ich habe den Code von Rudi ausprobiert und er funktioniert leider nur teilweise.
Irgendwie bezieht er ab einer bestimmten Reihe auch außerhalb von den Zeilen 4bis 115 Zeilen mit ein. Sodass ich z.B. Zeile 90/91 einblenden will aber er gleichzeitig andere Zeilen ausblendet.
Habe ich bei der Listenerstellung einen Fehler?
Bin über Hilfe froh und bedanke mich schon mal im voraus.
Anzeige
AW: Mein bisheriger Code
12.08.2016 12:15:26
Rudi
Hallo,
Habe ich bei der Listenerstellung einen Fehler?
Ja!
Verbundene Zellen haben in Listen nichts zu suchen.
Gruß
Rudi
AW: Mein bisheriger Code
12.08.2016 11:36:48
Ledi
Ich habe noch vergessen zu erwähnen das ab Zeile 116 bis 323 die nächste Listbox nach selben Prinzip gibt. auch hier sind die zeilen wieder verbunden. Lediglich zeile 116 welche zwischen beiden ist, ist keine verbundene Zelle. VG
Anzeige
AW: Mein bisheriger Code
12.08.2016 11:38:11
Ledi
Korrektur nächste listbox ist Zeile 117-323 ... Sorry :-D
;
Anzeige

Infobox / Tutorial

Zeilen in Excel per Listbox mit MultiSelect ausblenden


Schritt-für-Schritt-Anleitung

Um in Excel eine Listbox mit MultiSelect zu erstellen, die es ermöglicht, Zeilen ein- oder auszublenden, kannst du die folgenden Schritte befolgen. Dieser Prozess setzt voraus, dass du mit VBA (Visual Basic for Applications) vertraut bist und Excel 2013 oder höher verwendest.

  1. UserForm erstellen: Öffne den VBA-Editor (ALT + F11) und füge eine neue UserForm hinzu.

  2. ListBox hinzufügen: Ziehe eine ListBox auf die UserForm und stelle sicher, dass die Eigenschaft "MultiSelect" auf fmMultiSelectMulti gesetzt ist.

  3. Code zur Befüllung der ListBox: Füge den folgenden Code in die UserForm ein, um die ListBox mit Wörtern aus der Spalte A zu befüllen.

    Private Sub UserForm_Initialize()
       Dim L As Long
       For L = 4 To 115
           If Sheets("Vergleich").Cells(L, 1) <> "" Then _
               ListBox1.AddItem Sheets("Vergleich").Cells(L, 1)
       Next
    End Sub
  4. Zeilen ein- und ausblenden: Verwende diesen Code, um die Zeilen basierend auf den ausgewählten Elementen in der ListBox ein- oder auszublenden:

    Private Sub ListBox1_Click()
       Dim i As Long
       For i = 0 To ListBox1.ListCount - 1
           Sheets("Vergleich").Rows(i * 2 + 4).Resize(2).Hidden = Not ListBox1.Selected(i)
       Next i
    End Sub
  5. UserForm testen: Starte die UserForm und teste die Funktionalität der ListBox.


Häufige Fehler und Lösungen

  • Problem: Die ListBox zeigt unerwartete Zeilen an.

    • Lösung: Stelle sicher, dass die korrekten Zeilen in der Schleife angesprochen werden. Überprüfe den Index und die Bedingungen in deinem Code.
  • Problem: Verbundene Zellen werden nicht richtig behandelt.

    • Lösung: Verwende keine verbundenen Zellen in der ListBox. Das kann zu unerwartetem Verhalten führen, wie von Rudi im Forum erwähnt.

Alternative Methoden

Eine alternative Methode zur Filterung oder Ausblendung von Zeilen könnte die Verwendung von AutoFilter sein. Damit kannst du Daten basierend auf Kriterien filtern, ohne die Sichtbarkeit von Zeilen manuell zu ändern.

Sub FilterData()
    Sheets("Vergleich").Range("A3").AutoFilter Field:=1, Criteria1:="DeinKriterium"
End Sub

Praktische Beispiele

Wenn du die oben genannten Codes richtig implementiert hast, wird deine UserForm wie folgt funktionieren:

  • Wörter in der ListBox: Wenn du in der ListBox ein Wort auswählst und auf "OK" klickst, werden die entsprechenden Zeilen in der Tabelle angezeigt.
  • Mehrere Auswahlmöglichkeiten: Mit MultiSelect kannst du mehrere Wörter gleichzeitig auswählen, und alle nicht ausgewählten Zeilen werden ausgeblendet.

Tipps für Profis

  • Debugging: Nutze die Debugging-Werkzeuge im VBA-Editor, um Fehler zu finden. Setze Haltepunkte und beobachte die Werte während der Ausführung.
  • UserForm designen: Gestalte deine UserForm ansprechend, indem du Labels und Buttons hinzufügst, um die Benutzererfahrung zu verbessern.
  • Dynamische Zeilenanpassung: Erweitere den Code, um dynamisch auf Änderungen in den Daten zu reagieren, z.B. durch das Hinzufügen von Ereignisprozeduren.

FAQ: Häufige Fragen

1. Kann ich die ListBox auch mit anderen Datentypen befüllen?
Ja, du kannst die ListBox auch mit Zahlen oder Datum befüllen, solange du die richtigen Daten in den Zellen hast.

2. Was mache ich, wenn ich mehr als eine ListBox benötige?
Du kannst mehrere ListBoxes in einer UserForm hinzufügen und für jede ListBox einen ähnlichen Code verwenden, um die entsprechenden Zeilen zu steuern. Achte dabei auf die richtigen Indizes.

3. Wie gehe ich mit verbundenen Zellen um?
Verbundene Zellen sollten vermieden werden, wenn du eine ListBox verwendest. Verwende stattdessen separate Zellen für jeden Eintrag.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige