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

VBA - Zeile färben

Forumthread: VBA - Zeile färben

VBA - Zeile färben
26.12.2008 11:24:00
WalterK
Hallo,
folgenden Code habe ich in der Recherche gefunden, er markiert von A bis D die aktive Zeile.
Ich sollte folgende Änderungen haben, die ich selbst nicht hinbekomme:
Mein Gültigkeitsbereich geht von A2:N10000 und von T2:AZ10000
d.h. im Bereich O:S soll nichts passieren.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim bereich As Range
Set bereich = Range("a2:d100") 'Gültigkeitsbereich
If Not Intersect(Target, bereich) Is Nothing Then
bereich.Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 1), Cells(Target.Row, 4)).Interior.ColorIndex = 36
End If
End Sub


Besten Dank im voraus
und Servus, Walter

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA - Zeile färben
26.12.2008 11:50:00
Peter
Hallo Walter,
dann versuch es so:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Range("A2:AZ10000")   ' Gültigkeitsbereich
If Not Intersect(Target, Bereich) Is Nothing Then
Bereich.Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 1), Cells(Target.Row, 52)).Interior.ColorIndex = 36
End If
Range("O2:S10000").Interior.ColorIndex = xlNone
End Sub


Gruß Peter

Anzeige
AW: VBA - Zeile färben
26.12.2008 12:34:00
WalterK
Hallo Peter,
besten Dank, aber ein Problem ist noch:
Von O:S habe ich manuell Hintergrundfarben gesetzt, diese werden jetzt aber gelöscht und das sollte nicht sein. Gibt es dafür auch eine Lösung?
Servus, Walter
mit Union gehts es so ...
26.12.2008 11:54:00
Matthias
Hallo

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Union(Range("a2:N10000"), Range("T2:AZ10000")) 'Gültigkeitsbereich
Bereich.Interior.ColorIndex = xlNone
If Not Intersect(Target, Bereich) Is Nothing Then
Range(Cells(Target.Row, 1), Cells(Target.Row, 4)).Interior.ColorIndex = 36
End If
End Sub


Gruß Matthias

Anzeige
AW: mit Union gehts es so ...
26.12.2008 12:38:27
WalterK
Hallo Matthias,
auch Dir ein Dank.
Ich hab mich vielleicht zu ungenau ausgedrückt. Der Gültigkeitsbereich ist schon richtig so, allerdings soll auch die Markierung von A2:N10000 und von T2:AZ10000 gelten. Jetzt wird nur von A:D markiert.
Servus, Walter
AW: mit Union gehts es so ...
26.12.2008 12:58:00
hary
Hallo Walter
versuchs mal so. O bis S bleibt unangetastet.

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim bereich As Range
Set bereich = Union(Range("a2:n10000"), Range("T2:AZ10000")) 'Gültigkeitsbereich
If Not Intersect(Target, bereich) Is Nothing Then
bereich.Interior.ColorIndex = xlNone
Range(Cells(Target.Row, 1), Cells(Target.Row, 14)).Interior.ColorIndex = 36
Range(Cells(Target.Row, 20), Cells(Target.Row, 52)).Interior.ColorIndex = 36
End If
End Sub


Gruss Hary

Anzeige
AW: jetzt passt's
26.12.2008 14:16:47
WalterK
Danke Hary,
perfekt!
Servus, Walter
Bitte, danke fuer Rueckmeldung owT
26.12.2008 14:43:57
hary
.
;
Anzeige

Infobox / Tutorial

Zeilenfärbung in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um die aktive Zeile in einem bestimmten Bereich in Excel farblich hervorzuheben, kannst Du den folgenden VBA-Code verwenden. Dieser Code sorgt dafür, dass die Zeilen in den Bereichen A2:N10000 und T2:AZ10000 eingefärbt werden, während die Spalten O bis S unberührt bleiben.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Wähle das entsprechende Arbeitsblatt aus.
  3. Füge den folgenden Code in das Codefenster ein:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim bereich As Range
    Set bereich = Union(Range("A2:N10000"), Range("T2:AZ10000")) 'Gültigkeitsbereich
    bereich.Interior.ColorIndex = xlNone
    If Not Intersect(Target, bereich) Is Nothing Then
        Range(Cells(Target.Row, 1), Cells(Target.Row, 14)).Interior.ColorIndex = 36
        Range(Cells(Target.Row, 20), Cells(Target.Row, 52)).Interior.ColorIndex = 36
    End If
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Teste den Code, indem Du verschiedene Zellen im festgelegten Bereich auswählst.

Häufige Fehler und Lösungen

  • Problem: Die Hintergrundfarben in Spalten O bis S werden gelöscht.

    • Lösung: Stelle sicher, dass der Code in der Worksheet_SelectionChange-Subroutine die Bereiche korrekt definiert, wie im obigen Beispiel gezeigt.
  • Problem: Der Code funktioniert nicht wie erwartet.

    • Lösung: Überprüfe, ob Makros aktiviert sind. Gehe zu Datei -> Optionen -> Trust Center -> Einstellungen für das Trust Center und aktiviere die Makros.

Alternative Methoden

Falls Du keine VBA-Lösungen verwenden möchtest, kannst Du auch bedingte Formatierungen benutzen:

  1. Wähle den gewünschten Bereich aus (z.B. A2:AZ10000).
  2. Gehe zu Start -> Bedingte Formatierung -> Neue Regel.
  3. Wähle „Formel zur Ermittlung der zu formatierenden Zellen verwenden“ und gib eine Formel ein, die auf die aktive Zeile verweist, wie z.B. =ZEILE()=ZEILE(INDIREKT("A"&ANZAHL2(A:A))).
  4. Wähle die gewünschte Formatierung aus.

Praktische Beispiele

Hier ist ein Beispiel, wie Du den VBA-Code anpassen kannst, um die aktive Zeile in einem größeren Bereich zu markieren:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim bereich As Range
    Set bereich = Union(Range("A2:N10000"), Range("T2:AZ10000")) 'Gültigkeitsbereich
    bereich.Interior.ColorIndex = xlNone
    If Not Intersect(Target, bereich) Is Nothing Then
        Range(Cells(Target.Row, 1), Cells(Target.Row, 14)).Interior.ColorIndex = 36 ' Färbt A bis N
        Range(Cells(Target.Row, 20), Cells(Target.Row, 52)).Interior.ColorIndex = 36 ' Färbt T bis AZ
    End If
End Sub

In diesem Beispiel wird die Zeile in den Spalten A bis N sowie T bis AZ eingefärbt, während O bis S unverändert bleibt.


Tipps für Profis

  • Nutze ColorIndex für vordefinierte Farben oder RGB für benutzerdefinierte Farben.
  • Experimentiere mit zusätzlichen Bedingungen in der If-Anweisung, um die Logik zu erweitern.
  • Erstelle eine Schaltfläche in Excel, um den VBA-Code auszulösen, was die Benutzerfreundlichkeit verbessert.

FAQ: Häufige Fragen

1. Frage
Wie kann ich die Farbe ändern, die für die Markierung verwendet wird?
Antwort: Du kannst den Wert von ColorIndex in der Zeile Interior.ColorIndex = 36 ändern. Nutze Werte von 1 bis 56 oder setze Interior.Color = RGB(255,0,0) für eine benutzerdefinierte Farbe.

2. Frage
Funktioniert dieser Code in Excel 2016 und späteren Versionen?
Antwort: Ja, der Code ist kompatibel mit Excel 2016 und allen späteren Versionen, solange Makros aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige