Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Listview Zeile einfärben

Forumthread: Listview Zeile einfärben

Listview Zeile einfärben
28.09.2017 13:38:12
Philipp
Hallo liebes Forum! :)
Also ich habe folgendes Problem:
Ich will einen Eintrag in meiner ListView(Listview2) farbig einfärben sobald dieser ListView Eintrag einen anderen Eintrag in einem Tabellenblatt(variabler Name = NameSheet) entspricht. Leider weiß ich nicht wie die Syntax dafür ist. Das ist mein Versuch:
Public Sub Listview2_init()
NameSheet = ThisWorkbook.Worksheets("Temp").Cells(1, 1)
Dim lngZe As Long, lngSp As Long, irow As Long
Dim i As Long, irow2 As Long
If ThisWorkbook.Worksheets("Sources").Cells(2, 3) = "" Then
irow = 2
Else
irow = ThisWorkbook.Worksheets("Sources").Range("C:C").End(xlDown).Row
End If
''If ThisWorkbook.Worksheets(NameSheet).Cells(2, 1) = "" Then
''    irow2 = 2
''Else
''    irow2 = ThisWorkbook.Worksheets(NameSheet).Range("A:A").End(xlDown).Row
''End If
With IdeasForm.ListView2
.View = lvwReport
.FullRowSelect = True
.ColumnHeaders.Add , , ThisWorkbook.Worksheets("Sources").Cells(1, 3) 'Listview Kopf  _
anlegen
'Alle Vorhandenen Zeilen in die Listview eintragen
For lngZe = 2 To irow
.ListItems.Add , , ThisWorkbook.Worksheets("Sources").Cells(lngZe, 3)
'Zeilen befüllen
'Sobald eine Zeile im Listview einer Zeile im Worksheet entspricht soll die
Zeile grün gefärbt werden
''For i = 2 To irow2
''If ListItems(lngZe) = ThisWorkbook.Worksheets(NameSheet).Cells(i, 1) Then
''   .ListItems.BackColor (lngZe)= vbGreen
''End If
''Next i
Next lngZe
End With
End Sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listview Zeile einfärben
28.09.2017 13:57:06
Nepumuk
Hallo Philipp,
das geht nicht. Du kannst maximal die Schriftfarbe für eine Zeile ändern.
Gruß
Nepumuk
AW: Listview Zeile einfärben
29.09.2017 12:16:46
Philipp
Ja die Schriftfarbe wäre auch in Ordnung ich will diesen Eintrag in dem Listview besser kenntlich machen ;)
Gruß
Philipp
AW: Listview Zeile einfärben
29.09.2017 12:49:01
Nepumuk
Hallo Philipp,
teste mal:
Public Sub Listview2_init()
    
    Dim irow As Long, lngZe As Long
    Dim NameSheet As String
    Dim objListItem As ListItem
    
    NameSheet = ThisWorkbook.Worksheets("Temp").Cells(1, 1)
    
    With ThisWorkbook.Worksheets("Sources")
        
        If IsEmpty(.Cells(2, 3).Value) Then
            irow = 2
        Else
            irow = .Cells(.Rows.Count, 3).End(xlUp).Row
        End If
    End With
    
    With IdeasForm.ListView2
        
        .View = lvwReport
        
        .FullRowSelect = True
        
        .ColumnHeaders.Add , , ThisWorkbook.Worksheets("Sources").Cells(1, 3).Value
        
        For lngZe = 2 To irow
            
            Set objListItem = .ListItems.Add(, , ThisWorkbook.Worksheets("Sources").Cells(lngZe, 3).Value)
            
            If objListItem.Text = NameSheet Then objListItem.ForeColor = vbGreen
            
        Next lngZe
        
    End With
End Sub

Gruß
Nepumuk
Anzeige
das geht nur mit einem kleinen Trick
28.09.2017 14:04:58
Martin
Hallo Philipp,
hier mal ein Beispiel:
https://www.herber.de/bbs/user/116607.zip
Der Trick ist einfach eine passende Grafik als Hintergrundgrafik zu verwenden:
ListView1.Picture = LoadPicture([Dateipfad])
Viele Grüße
Martin
Anzeige
AW: das geht nur mit einem kleinen Trick
28.09.2017 14:11:00
Nepumuk
Hallo Martin,
Philipp will nur eine bestimmte Zeile einfärben.
Gruß
Nepumuk
AW: das geht nur mit einem kleinen Trick
28.09.2017 14:18:57
Martin
Hallo Nepumuk,
ich danke dir für den Hinweis und hätte mir die Aufgabenstellung sorgfältiger durchlesen sollen.
Wenn die ListBox eine überschaubare Anzahl an Einträgen hat (z.B. 10) und keine Scrollbar verwendet wird, könnte man eine entsprechend passende Anzahl an Hintergrundgrafiken generieren und dynamisch austauschen. Aufwand und Nutzen stehen dann aber in keinem Verhältnis zueinander.
Viele Grüße
Martin
Anzeige
;
Anzeige

Infobox / Tutorial

Listview Zeile einfärben in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Zeile in einer Listview in Excel VBA farbig zu markieren, kannst du den folgenden Code verwenden. Dieser Code färbt die Schriftfarbe eines Listview-Eintrags grün, wenn er einem Eintrag in einem bestimmten Excel-Arbeitsblatt (NameSheet) entspricht.

Public Sub Listview2_init()
    Dim NameSheet As String
    NameSheet = ThisWorkbook.Worksheets("Temp").Cells(1, 1)

    Dim lngZe As Long, irow As Long
    irow = ThisWorkbook.Worksheets("Sources").Cells(Rows.Count, 3).End(xlUp).Row

    With IdeasForm.ListView2
        .View = lvwReport
        .FullRowSelect = True
        .ColumnHeaders.Add , , ThisWorkbook.Worksheets("Sources").Cells(1, 3)

        For lngZe = 2 To irow
            Dim objListItem As ListItem
            Set objListItem = .ListItems.Add(, , ThisWorkbook.Worksheets("Sources").Cells(lngZe, 3).Value)

            If objListItem.Text = NameSheet Then
                objListItem.ForeColor = vbGreen
            End If
        Next lngZe
    End With
End Sub

Stelle sicher, dass du die richtige Excel-Version verwendest, die VBA unterstützt, um diesen Code auszuführen.


Häufige Fehler und Lösungen

  • Fehler: Zeilenfarbe ändert sich nicht.

    • Lösung: Überprüfe, ob der Vergleich zwischen objListItem.Text und NameSheet korrekt durchgeführt wird. Achte darauf, dass NameSheet den richtigen Wert enthält.
  • Fehler: Listview wird nicht aktualisiert.

    • Lösung: Stelle sicher, dass du die Listview vor der Befüllung korrekt initialisierst und die Daten aus dem richtigen Arbeitsblatt ziehst.

Alternative Methoden

Wenn du die Schriftfarbe nicht ändern möchtest, sondern eine Hintergrundgrafik für bestimmte Einträge verwenden willst, kannst du den folgenden Ansatz nutzen:

ListView1.Picture = LoadPicture([Dateipfad])

Diese Methode eignet sich besser für visuelle Anpassungen, erfordert jedoch, dass du die Grafiken im Voraus erstellst.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um Einträge in einer Listview zu markieren. Angenommen, du hast ein Arbeitsblatt mit Namen "Temp", in dem sich die zu vergleichenden Werte befinden. Der Code oben wird die Listview entsprechend aktualisieren und die Schriftfarbe der übereinstimmenden Einträge färben.


Tipps für Profis

  • Nutze If ... Then-Bedingungen effizient, um verschiedene Farben oder Stile für unterschiedliche Einträge zu definieren.
  • Experimentiere mit der ForeColor-Eigenschaft, um verschiedene Schriftfarben für verschiedene Bedingungen zu setzen.
  • Halte deinen Code modular, indem du Funktionen für das Hinzufügen von Listview-Elementen und das Einfärben von Zeilen schreibst.

FAQ: Häufige Fragen

1. Kann ich nicht nur die Schriftfarbe, sondern auch den Hintergrund färben? Leider unterstützt die Listview in Excel VBA nicht das Färben des Hintergrunds einzelner Zeilen. Du kannst jedoch die Schriftfarbe ändern.

2. Funktioniert dieser Code in allen Excel-Versionen? Der Code funktioniert in allen Excel-Versionen, die VBA unterstützen. Achte darauf, dass du die richtige Umgebung und die richtigen Verweise gesetzt hast.

3. Wie kann ich die Listview dynamisch aktualisieren? Du kannst die Listview nach jeder Änderung der Datenquelle aktualisieren, indem du die Listview2_init-Subroutine erneut ausführst, um die neuesten Daten anzuzeigen.

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