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

Forumthread: mit VBA! Zellen färben nach Kriterium pro Spalte

mit VBA! Zellen färben nach Kriterium pro Spalte
07.02.2014 14:18:38
Tobias
Hallo,
ich möchte mittels VBA die Zellen färben, wie in der Datei beschrieben. Wichtig ist dass es eine Lösung mit VBA ist, da die Bedingte Formatierung bei mir nicht möglich ist (die Farben müssen "fest" in der Zelle sein, da die Dateien später von Tablets geöffnet werden, welche keine Bedingte Formatierung erkennen)
https://www.herber.de/bbs/user/89154.xlsx
Ich hoffe dass sich das unkompliziert per VBA lösen lässt. Das Makro soll auf bereits vorhandene Tabellen angewendet werden, d.h. es muss nicht dynamisch sein.
Vielen Dank und viele Grüße
Tobias

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: mit VBA! Zellen färben nach Kriterium pro Spalte
07.02.2014 14:31:38
Rudi
Hallo,
Sub Farbe()
Dim rngC As Range
Application.ScreenUpdating = False
For Each rngC In Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
If rngC = "B" Then
rngC.Interior.Color = vbYellow
Else
rngC.Interior.Color = xlNone
End If
If rngC.Offset(, 1) = 10 Then
rngC.Offset(, 1).Interior.Color = vbRed
Else
rngC.Offset(, 1).Interior.Color = xlNone
End If
If rngC.Offset(, 2) = "Z" Then
rngC.Offset(, 2).Interior.Color = vbRed
Else
rngC.Offset(, 2).Interior.Color = xlNone
End If
Next
End Sub

Gruß
Rudi

Anzeige
AW: mit VBA! Zellen färben nach Kriterium pro Spalte
07.02.2014 15:20:01
Tobias
Hallo Rudi,
vielen Dank für die Antwort. Ich habe den Code in mein Beispiel eingetragen, bekomme aber nun folgendes Problem:
Meine erste Spalte bei der ich färben möchte, beginnt bei "I". Ich habe folgenden Code eingefügt (der Einfachheit halber erstmal nur diese eine Spalte):
Sub Farbe()
Dim rngC As Range
Application.ScreenUpdating = False
For Each rngC In Range(Cells(2, 9), Cells(Rows.Count, 1).End(xlUp))
If rngC = "P" Then
rngC.Interior.Color = vbYellow
Else
rngC.Interior.Color = xlNone
End If
Next
End Sub

Die Spalte I wird bei allen "P" jetzt gelb gefärbt, aber alle Zellen von Spalte A bis I werden dabei weiß gemacht (teilweise hatten diese schon andere Farben). Kann man dies verhindern, und wirklich nur die Zellen "anfassen" die den Eintrag P enthalten?
VG Tobias

Anzeige
AW: mit VBA! Zellen färben nach Kriterium pro Spalte
07.02.2014 15:23:48
Tobias
ich aktiviere die Frage mal noch als offen...

AW: mit VBA! Zellen färben nach Kriterium pro Spalte
07.02.2014 14:42:00
EtoPHG
Hallo,
In ein Modul.
Die Arrays lassen sich einfach anpassen und/oder ausbauen.
Sub MachsFarbig()
Dim aColumns, aValues, aColors
Dim lRow As Long, lCol As Long, lx As Long
aColumns = Array(1, 2, 3)                   'Spaltennummern
aValues = Array("B", 10, "Z")               'Inhalt der jew. Spalte
aColors = Array(vbYellow, vbRed, vbRed)     'Hintergrundfarbe der Zelle
For lRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
For lCol = 0 To UBound(aColumns)
With Cells(lRow, aColumns(lCol))
.Interior.ColorIndex = xlColorIndexNone
If .Value = aValues(lCol) Then .Interior.Color = aColors(lCol)
End With
Next lCol
Next lRow
End Sub
Gruess Hansueli

Anzeige
AW: mit VBA! Zellen färben nach Kriterium pro Spalte
07.02.2014 15:23:14
Tobias
Hallo Hansueli,
auch dir herzlichen Dank für die Mühe. Wie bei Rudis Code habe ich ein Problem, dass er auch Zellen bearbeitet die einen anderen Inhalt haben:
Sub MachsFarbig()
Dim aColumns, aValues, aColors
Dim lRow As Long, lCol As Long, lx As Long
aColumns = Array(9) 'Spaltennummern
aValues = Array("P") 'Inhalt der jew. Spalte
aColors = Array(vbYellow) 'Hintergrundfarbe der Zelle
For lRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
For lCol = 0 To UBound(aColumns)
With Cells(lRow, aColumns(lCol))
.Interior.ColorIndex = xlColorIndexNone
If .Value = aValues(lCol) Then .Interior.Color = aColors(lCol)
End With
Next lCol
Next lRow
Dieser Code ist jetzt in meinem konkreten Beispiel. Der Vorteil zu Rudis Code ist, dass er die Spalten A bis H in Ruhe lässt. Allerdings werden in Spalte I alle Zellen weiß, welche nicht "P" enthalten. Lässt sich das verhindern?
Vielen Dank!,
Tobias

Anzeige
AW: mit VBA! Zellen färben nach Kriterium pro Spalte
07.02.2014 15:30:18
EtoPHG
Hallo Tobias,
Lösch einfach die Zeile: .Interior.ColorIndex = xlColorIndexNone
Allerdings behalten die Zellen dann ihre Farbe und ev. eben auch eine falsche, wenn ihr Wert geändert wird.
Gruess Hansueli

AW: mit VBA! Zellen färben nach Kriterium pro Spalte
07.02.2014 15:33:40
Tobias
Vielen Dank Hansueli, jetzt ist es perfekt! :)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zellen färben mit VBA nach Kriterien pro Spalte


Schritt-für-Schritt-Anleitung

Um Zellen in Excel mittels VBA nach bestimmten Kriterien pro Spalte zu färben, kannst du folgenden Schritten folgen:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Modul einfügen: Klicke mit der rechten Maustaste auf „VBAProject (deineArbeitsmappe)” und wähle Einfügen > Modul.

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Sub Farbe()
        Dim rngC As Range
        Application.ScreenUpdating = False
        For Each rngC In Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
            If rngC.Value = "B" Then
                rngC.Interior.Color = vbYellow
            Else
                rngC.Interior.ColorIndex = xlColorIndexNone
            End If
        Next
        Application.ScreenUpdating = True
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle das Makro „Farbe” und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Problem: Alle Zellen werden weiß gefärbt.

    • Lösung: Stelle sicher, dass du die Zeile .Interior.ColorIndex = xlColorIndexNone nur dort verwendest, wo du die Zellen zurücksetzen möchtest. Entferne diese Zeile, wenn du nur spezifische Zellen färben möchtest.
  • Problem: Der Code färbt nicht die gewünschte Spalte.

    • Lösung: Achte darauf, die richtige Spaltennummer in Cells(2, n) anzugeben, wobei n die Spaltennummer ist, die du färben möchtest.

Alternative Methoden

Eine weitere Möglichkeit, Zellen in Excel zu färben, ist die Verwendung von Arrays. Hier ist ein Beispiel, wie du das umsetzen kannst:

Sub MachsFarbig()
    Dim aColumns, aValues, aColors
    Dim lRow As Long, lCol As Long
    aColumns = Array(1, 2, 3)                         ' Spaltennummern
    aValues = Array("B", 10, "Z")                     ' Inhalt der jeweiligen Spalte
    aColors = Array(vbYellow, vbRed, vbRed)           ' Hintergrundfarbe der Zelle

    For lRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        For lCol = 0 To UBound(aColumns)
            With Cells(lRow, aColumns(lCol))
                If .Value = aValues(lCol) Then .Interior.Color = aColors(lCol)
            End With
        Next lCol
    Next lRow
End Sub

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du Zellen in Spalte I einfärben kannst, wenn der Wert „P“ ist:

Sub FarbeI()
    Dim rngC As Range
    Application.ScreenUpdating = False
    For Each rngC In Range(Cells(2, 9), Cells(Rows.Count, 9).End(xlUp))
        If rngC.Value = "P" Then
            rngC.Interior.Color = vbYellow
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Achte darauf, dass nur die Zellen in Spalte I gefärbt werden, während andere Spalten unberührt bleiben.


Tipps für Profis

  • Interaktive Fehlerbehandlung: Verwende On Error Resume Next, um Fehler im Code zu ignorieren, und On Error GoTo 0, um sie wieder zu aktivieren.
  • Dynamische Bereiche: Statt feste Zellbereiche zu verwenden, kannst du dynamische Bereiche mit Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row) definieren.
  • Leistungsoptimierung: Setze Application.ScreenUpdating auf False, um das Flackern der Bildschirmaktualisierung zu vermeiden, während das Makro läuft.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Kriterien in einer Spalte verwenden? Du kannst eine Select Case-Anweisung verwenden, um verschiedene Werte und entsprechende Farben zu definieren.

2. Funktioniert das auch in älteren Excel-Versionen? Ja, der VBA-Code sollte in den meisten Versionen von Excel funktionieren, die VBA unterstützen (ab Excel 97).

3. Kann ich die Farben ändern? Ja, du kannst die Hintergrundfarbe der Zellen anpassen, indem du die vba-Farbwerte entsprechend änderst, z.B. Interior.Color = RGB(255, 0, 0) für Rot.

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