Clever-Excel-Forum

Normale Version: Zellen einfärben, wenn Inhalt vorhanden (VBA)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich würde gerne über VBA die Farbe von Zellen festlegen. Ich möchte keine Bedingten Formatierungen verwenden.

Dabei soll in einem bestimmten Bereich die Farbe der Zelle von Standard (Weißer Hintergrund) zur festgelegten Farbe (Rot) vorgenommen werden, wenn irgendetwas in die Zelle geschrieben wird (Zahl oder Text).

Habe versucht in Spalte B von Zeile 7 bis 21 die Zellfarbe auf Rot zu ändern, falls irgendetwas drin steht.

Mein Code bisher:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Zellfarbe

If Target.Column = 2 And Target.Row > 6 And Target.Row < 21 Then
If Target.Value <> "" Then Target.Interior.ColorIndex = vbRed
End If

End Sub


Leider ohne Erfolg, könnt Ihr mir sagen wo mein Fehler liegt?


Danke & Gruß
Hi,

wieso willst du eine Standardfunktion in XL nicht nutzen und stattdessen diese mit VBA nachbauen?
Weil der Bereich oft händisch von Nutzern verschoben wird, dabei wird auch der Bereich verschoben/geändert für den die Bedingte Formatierung eigentlich relevant ist.

Also wenn ich die Bedingte Formatierung für B7:B21 festlege und ein Nutzer dann B15 verschiebt, dann ändert sich auch der Bereich für die Bedingte Formatierung, was aber nicht sein sollte.


Der Bereich soll deshalb mittels eines VBA Codes festgelegt werden, den der Nutzer nicht so einfach per "Drag & Drop" verschieben kann.
Hab das jetzt so gelöst:

Code:
Private Sub Worksheet_Calculate()
If Worksheets("Tabelle1").Cells(7, 2) <> "" Then
  Worksheets("Tabelle1").Cells(7, 2).Interior.ColorIndex = 4
Else
  Worksheets("Tabelle1").Cells(7, 2).Interior.ColorIndex = 2
End If
End Sub

Das ist der Code für eine Zeile. Nun muss ich den Bereich B7:B21 so einfärben. Kann man den Code anpassen, so dass ich nicht für jede Zeile diesen Code wiederholen muss?
Nochmal umgesattelt:

Code:
Private Sub Worksheet_Calculate()
'Bedingte Formatierungen
Dim Zelle As Range, Bereich As Range
Set Bereich = Range("B7:B21")
For Each Zelle In Bereich
Select Case Zelle.Value
  Case "":
     Zelle.Interior.Color = RGB(191, 191, 191)
  Case Is <> "":
     Zelle.Interior.Color = RGB(252, 213, 180)
     End Select
Next Zelle
End Sub