Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: "bedingte Formatierung" in Userform-ListBox möglich?

"bedingte Formatierung" in Userform-ListBox möglich?
23.01.2020 07:14:49
Klaus
Hallo Leute,
ich habe in einer Userform eine Listbox, diese hat 9 Spalten und wird dynamisch mit 2 bis 200 Zeilen gefüllt. Auf diese Listbox hätte ich am liebsten eine Art bedingte Formatierung: Wenn Inhalt Spalte 9 = "ja", dann ganze Zeile rot markieren.
Ich bin mir ziemlich sicher, dass genau das nicht gehen wird. Hat jemand Ideen, wie ich eine scrollbare und Variable Anzahl von Datensätzen mit bedingter Formatierung in einer Userform anzeigen könnte? Es muss keine Auswahlmöglichkeit bestehen, die Anzeige reicht! Ich möchte verhindern, dass ich nacher 9x200 Labels anlege ...
LG,
Klaus M.
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "bedingte Formatierung" in Userform-ListBox möglich?
23.01.2020 07:59:00
Nepumuk
Hallo Klaus,
das geht mit einer Listbox nicht. Es ginge mit einem Listview-Control, aber dazu müsstest du eine OCX installieren.
Gruß
Nepumuk
AW: "bedingte Formatierung" in Userform-ListBox möglich?
23.01.2020 14:07:12
Daniel
Hi
wenn dir die Anzeige reicht und der Anwender nichts auswählen muss, würde ich die Listbox als Multiselect-Listbox anlegen und per Schleife alle Zeilen mit "ja" selektieren, dann werden sie auch farblich hervorgehoben.:
For i = 0 to Listbox1.ListCount - 1
Listbox1.Selected(i) = (Listbox1.List(i, 8) = "ja")
Next
das würde ich dann als eigenen Button auch dem Anwender zur verfügung stellen, falls der doch mal in die Listbox geklickt hat und so die Markierung verändert hat.
Gruß Daniel
Anzeige
AW: "bedingte Formatierung" in Userform-ListBox möglich?
23.01.2020 20:07:53
Klaus
Hey Daniel,
gute Idee! Simpel, aber genau was ich suchte.
LG,
Klaus
AW: "bedingte Formatierung"
24.01.2020 09:23:05
Klaus
Hallo Daniel,
        For i = 0 To ListBox_SPRStation.ListCount - 1
ListBox_SPRStation.Selected(i) = (ListBox_SPRStation.List(i, 8) = "x")
Next
ListBox_SPRStation.Locked = True
nochmal danke aus der Praxis - 1A. Statt den Code auf einen Button zu setzen, habe ich die Listbox einfach auf "locked" gesetzt. Die relevanten Einträge sind markiert, der User kann es nicht ändern. Super Lösung ohne viel Aufwand, so darf es gerne immer sein.
LG,
Klaus M.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Bedingte Formatierung in einer Userform-ListBox


Schritt-für-Schritt-Anleitung

Um eine bedingte Formatierung in einer ListBox innerhalb einer Userform zu implementieren, kannst Du die folgende Vorgehensweise nutzen:

  1. Userform erstellen: Öffne den VBA-Editor in Excel (Alt + F11) und füge eine neue Userform hinzu.

  2. ListBox hinzufügen: Ziehe eine ListBox auf die Userform und stelle sicher, dass sie die benötigte Anzahl an Spalten hat (in diesem Fall 9).

  3. Daten füllen: Füge den Code hinzu, um die ListBox dynamisch mit Daten zu füllen.

  4. Bedingte Formatierung: Verwende den folgenden VBA-Code, um die Zeilen zu markieren, wenn der Inhalt der 9. Spalte "ja" ist.

    For i = 0 To ListBox1.ListCount - 1
       ListBox1.Selected(i) = (ListBox1.List(i, 8) = "ja")
    Next
  5. Interaktion einschränken: Du kannst die ListBox auch sperren, um zu verhindern, dass der Benutzer die markierten Zeilen ändern kann:

    ListBox1.Locked = True

Häufige Fehler und Lösungen

  • Fehler: ListBox zeigt keine Auswahl an
    Lösung: Stelle sicher, dass die ListBox im Mehrfachauswahlmodus (MultiSelect) eingestellt ist. Setze die Eigenschaft MultiSelect auf fmMultiSelectMulti.

  • Fehler: Kein Update der Auswahl
    Lösung: Überprüfe, ob der Code zur bedingten Formatierung nach dem Füllen der ListBox ausgeführt wird. Der Code sollte in der UserForm_Initialize-Routine oder einem entsprechenden Button-Ereignis platziert werden.


Alternative Methoden

Wenn Du eine komplexere Darstellung benötigst, kannst Du anstelle einer ListBox ein ListView-Control verwenden. Das ListView bietet mehr Flexibilität und ermöglicht eine echte bedingte Formatierung. Beachte jedoch, dass Du eine OCX-Datei installieren musst, um es nutzen zu können.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du die ListBox mit Daten füllen und die bedingte Formatierung anwenden kannst:

Private Sub UserForm_Initialize()
    ' Beispielhafte Daten hinzufügen
    With ListBox1
        .AddItem "Eintrag 1"
        .List(.ListCount - 1, 1) = "Wert 1"
        .List(.ListCount - 1, 8) = "ja"

        .AddItem "Eintrag 2"
        .List(.ListCount - 1, 1) = "Wert 2"
        .List(.ListCount - 1, 8) = "nein"
    End With

    ' Bedingte Formatierung anwenden
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = (ListBox1.List(i, 8) = "ja")
    Next
End Sub

Tipps für Profis

  • Verwende Schleifen: Nutze Schleifen, um die ListBox effizient zu verwalten, insbesondere wenn Du mit großen Datenmengen arbeitest.
  • Visualisierung: Überlege, ob Du zusätzliche visuelle Elemente wie Icons oder Farben in einer ListView verwenden möchtest, die eine bessere Benutzererfahrung bieten.
  • Performance: Bei sehr großen Datenmengen kann es hilfreich sein, die ListBox nur bei Bedarf zu aktualisieren, um die Performance zu verbessern.

FAQ: Häufige Fragen

1. Kann ich die ListBox nur lesbar machen?
Ja, Du kannst die ListBox mit ListBox.Locked = True sperren, sodass der Benutzer keine Änderungen vornehmen kann.

2. Funktioniert dies in allen Excel-Versionen?
Die beschriebenen Methoden funktionieren in den meisten modernen Excel-Versionen, die VBA unterstützen, einschließlich Excel 2010 und neuer.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige