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

Schriftfarbe per VBA ändern

Forumthread: Schriftfarbe per VBA ändern

Schriftfarbe per VBA ändern
08.02.2004 17:10:47
toni
Servus.
Habe gestern folgende tolle VBA Lösung über Zellhintergrundfarbänderungen erhalten.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Farbe
If Target.Column <> 4 Then Exit Sub
If Target.Count > 1 Then Exit Sub
Select Case Target.Value
Case 1: Farbe = 36
Case 2: Farbe = 15
Case 3: Farbe = 20
Case 4: Farbe = 4
Case Else: Farbe = xlColorIndexNone
End Select
Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Interior.ColorIndex = Farbe
Range(Cells(Target.Row, 11), Cells(Target.Row, 13)).Interior.ColorIndex = Farbe
Range(Cells(Target.Row, 15), Cells(Target.Row, 30)).Interior.ColorIndex = Farbe
End Sub

Nun bin ich so unverschämt und möchte noch gerne die Schriftfarbe automatisch
festlegen.
Und zwar wenn in den Zellen C "Sa" steht auf Schriftfarbe Dunkelblau (Farbe 5) und wenn "So" steht Schriftfarbe rot (Farbe 3).
Die Änderung soll für die gesamte jeweilige Zeile in der auch der Text Sa oder So steht gelten. Die Änderung der Hintergrundfarbe soll wie im vorstehenden VBA aungeführt bestehen bleiben.
Derzeit habe ich die Schriftfarbe für Sa und So über Bedingte Formatierung gelöst was nicht so gut funktioniert weil es verschiebungen gibt wenn zwischendurch Werte eingefügt werden.
Würde mich über eine Lösung die beide Farbeinstellungen in einem VBA erledigt sehr freuen.
Herzlichen Dank
Toni
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Schriftfarbe per VBA ändern
08.02.2004 17:22:45
Hajo_Zi
Hallo Toni

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Farbe
If Target.Count > 1 Then Exit Sub
If Target.Column = 4 Then
Select Case Target.Value
Case 1: Farbe = 36
Case 2: Farbe = 15
Case 3: Farbe = 20
Case 4: Farbe = 4
Case Else: Farbe = xlColorIndexNone
End Select
Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Interior.ColorIndex = Farbe
Range(Cells(Target.Row, 11), Cells(Target.Row, 13)).Interior.ColorIndex = Farbe
Range(Cells(Target.Row, 15), Cells(Target.Row, 30)).Interior.ColorIndex = Farbe
ElseIf Target.Column = 3 Then
If Weekday(Target.Value, 2) = 6 Then
Target.Font.ColorIndex = 5
ElseIf Weekday(Target.Value, 2) = 7 Then
Target.Font.ColorIndex = 3
End If
End If
End Sub

Gruß Hajo
Anzeige
Leider funkts noch nicht
08.02.2004 21:04:26
toni
Hallo
Leider funktioniert der Code bei mir nicht. Habe eine kleine Tabelle auf den Server gelegt damit mein Problem besser dargestellt werden kann.
https://www.herber.de/bbs/user/3509.xls
Da in der gesamten Tabelle über 5000 Zeilen sind wäre es gut wenn die Schriftfarbe auf alle schon bestehenden Zellen automatisch angewendet würde ohne die Zellen neu zu beschreiben.
Vielleicht hilft mir jemand weiter. Wäre schön wenns ginge.
Anzeige
AW: Leider funkts noch nicht
09.02.2004 05:28:28
Hajo_Zi
Hallo Toni
die Aufgabe "die Schriftfarbe auf alle schon bestehenden Zellen automatisch angewendet würde ohne die Zellen neu zu beschreiben" bestand nicht. Dann mußt Du nicht ein Ereignis benutzen sondern ein Makro in einem Modul. Dazu dürften schon genügend Beispiele im Forum geben.
Gruß Hajo
Anzeige
Makro ok, VBA Code funkt nicht
09.02.2004 08:30:18
Toni
Hallo Hajo.
Danke für Deine Nachricht. Die Änderung der bestehenden Zellen habe ich hingekriegt. Der Code wie im Beispiel (Nachicht von 8.2.) auf Server abgelegt funktioniert aber leider nicht.
Bitte um Hilfe.
Danke Toni.
;
Anzeige

Infobox / Tutorial

Schriftfarbe in Excel per VBA ändern


Schritt-für-Schritt-Anleitung

Um die Schriftfarbe in Excel per VBA zu ändern, kannst du den folgenden VBA-Code verwenden. Dieser Code reagiert auf Änderungen in der Tabelle und ändert die Schriftfarbe basierend auf dem Inhalt der Zelle in Spalte C.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle im Projektfenster das entsprechende Arbeitsblatt aus, in dem du die Schriftfarbe ändern möchtest.
  3. Füge diesen Code in das Codefenster ein:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim Farbe
    If Target.Count > 1 Then Exit Sub
    If Target.Column = 4 Then
        Select Case Target.Value
            Case 1: Farbe = 36
            Case 2: Farbe = 15
            Case 3: Farbe = 20
            Case 4: Farbe = 4
            Case Else: Farbe = xlColorIndexNone
        End Select
        Range(Cells(Target.Row, 1), Cells(Target.Row, 5)).Interior.ColorIndex = Farbe
        Range(Cells(Target.Row, 11), Cells(Target.Row, 13)).Interior.ColorIndex = Farbe
        Range(Cells(Target.Row, 15), Cells(Target.Row, 30)).Interior.ColorIndex = Farbe
    ElseIf Target.Column = 3 Then
        If Weekday(Target.Value, 2) = 6 Then
            Target.Font.ColorIndex = 5 ' Dunkelblau
        ElseIf Weekday(Target.Value, 2) = 7 Then
            Target.Font.ColorIndex = 3 ' Rot
        End If
    End If
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu deinem Arbeitsblatt.
  2. Teste die Funktion, indem du in Spalte C "Sa" oder "So" eingibst. Die Schriftfarbe sollte sich entsprechend ändern.

Häufige Fehler und Lösungen

  • Code funktioniert nicht: Stelle sicher, dass der Code im richtigen Arbeitsblatt-Modul eingefügt wurde.
  • Schriftfarbe wird nicht geändert: Prüfe, ob die Zelle in Spalte C mit "Sa" oder "So" korrekt eingegeben wurde.
  • Farbe wird nicht angezeigt: Überprüfe die Excel-Version, da ältere Versionen eventuell nicht alle Farbindizes unterstützen.

Alternative Methoden

Falls du die Schriftfarbe nicht über VBA ändern möchtest, kannst du auch die bedingte Formatierung verwenden:

  1. Wähle die Zellen aus, die du formatieren möchtest.
  2. Gehe zu "Start" > "Bedingte Formatierung" > "Neue Regel".
  3. Wähle "Formel zur Ermittlung der zu formatierenden Zellen verwenden" und gib eine Formel wie =C1="Sa" für Dunkelblau oder =C1="So" für Rot ein.
  4. Setze die Formatierung entsprechend.

Praktische Beispiele

Hier ist ein Beispiel, wie du den VBA-Code anpassen kannst, um mehr Farbänderungen hinzuzufügen:

ElseIf Target.Column = 3 Then
    If Target.Value = "Sa" Then
        Target.Font.ColorIndex = 5 ' Dunkelblau
    ElseIf Target.Value = "So" Then
        Target.Font.ColorIndex = 3 ' Rot
    ElseIf Target.Value = "Mo" Then
        Target.Font.ColorIndex = 6 ' Gelb
    End If
End If

Diese Anpassung erlaubt es dir, die Schriftfarbe auch für andere Wochentage zu ändern.


Tipps für Profis

  • Nutze Color anstelle von ColorIndex, um RGB-Farben zu verwenden. Zum Beispiel:
Target.Font.Color = RGB(0, 0, 255) ' Dunkelblau
  • Um die Schriftfarbe in einer gesamten Spalte zu ändern, kannst du ein separates Makro erstellen, das alle bestehenden Zellen durchläuft und die vba textfarbe ändern Funktion anwendet.

FAQ: Häufige Fragen

1. Funktioniert dieser Code in jeder Excel-Version?
Ja, der Code sollte in den meisten modernen Excel-Versionen, einschließlich Excel 2016 und neuer, funktionieren.

2. Kann ich die Schriftfarbe für andere Zellen automatisch ändern?
Ja, du kannst den Code anpassen, um zusätzliche Bedingungen für andere Zellen hinzuzufügen.

3. Was mache ich, wenn der Code weiterhin nicht funktioniert?
Überprüfe die Makrosicherheitseinstellungen in Excel und stelle sicher, dass Makros aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige