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

Forumthread: Registerfarbe ändern VBA

Registerfarbe ändern VBA
24.09.2018 18:21:58
Heiko
Hallo liebe Experten,
ich bin schon seit längerer Zeit Leser hier im Forum und konnte einige Probleme dadurch lösen. Jetzt muß ich aber doch zum ersten Mal konkret Hilfe erbitten.
Ich bin in Excel wohl recht fit, habe aber praktisch keine VBA-Kenntnisse. So habe ich mir eine Lösung zur automatischen Änderung der Registerkartenfarben mit VBA mal zusammengeklaubt, die eigentlich auch funktioniert:
Private Sub Worksheet_Calculate()
If Range("$L$28").Value = "Geplant" Then ActiveSheet.Tab.Color = RGB(166, 166, 166)
If Range("$L$28").Value = "Problem" Then ActiveSheet.Tab.Color = RGB(218, 150, 148)
If Range("$L$28").Value = "Begonnen" Then ActiveSheet.Tab.Color = RGB(255, 266, 0)
If Range("$L$28").Value = "Erledigt" Then ActiveSheet.Tab.Color = RGB(146, 208, 80)
If Range("$L$28").Value = "" Then ActiveSheet.Tab.Color = RGB(230, 230, 230)
End Sub
Das funktioniert soweit, mir ist jetzt nach längerer Nutzung nur aufgefallen, daß die Registerkarte, die zum Zeitpunkt der Speicherung (Schließen) der Datei angewählt war, die automatisch vergebene Farbe bei nächsten Öffnen der Datei wieder verliert (wird farblos). Alle anderen Registerkarten behalten ihre Farben.
Wäre toll, wenn mir hier jemand helfen könnte.
Vielen Dank
Heiko
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Registerfarbe ändern VBA
24.09.2018 18:47:31
onur
Keine Ahnung, warum das passiert, aber baue doch den Code auch noch in Workbook_Open.
AW: Registerfarbe ändern VBA
24.09.2018 19:11:41
Heiko
Hallo,
danke für die schnelle Antwort. Allerdings müßtest du mir das genauer ausführen, meine VBA-Kenntnisse sind praktisch null, habe das hier nur durch Copy-Paste hinbekommen.
Heiko
AW: Registerfarbe ändern VBA
24.09.2018 19:49:27
onur
Ebenso mit Copy&Paste, aber diesmal in Workbook_Open() statt in Worksheet_Calculate().
Im VBA-Editor / Projektfenster /Diese Arbeitsmappe doppelklicken, im aufgehenden Fenster links oben "Workbook" und rechts oben "Open" aussuchen und dort einfügen:
  If Range("$L$28").Value = "Geplant" Then ActiveSheet.Tab.Color = RGB(166, 166, 166)
If Range("$L$28").Value = "Problem" Then ActiveSheet.Tab.Color = RGB(218, 150, 148)
If Range("$L$28").Value = "Begonnen" Then ActiveSheet.Tab.Color = RGB(255, 266, 0)
If Range("$L$28").Value = "Erledigt" Then ActiveSheet.Tab.Color = RGB(146, 208, 80)
If Range("$L$28").Value = "" Then ActiveSheet.Tab.Color = RGB(230, 230, 230)

Anzeige
AW: Registerfarbe ändern VBA
25.09.2018 12:54:24
Heiko
Danke, das scheint geholfen zu haben. Allerdings funktioniert das merkwürdigerweise nur, wenn ich die externe Verknüpfung beim Start (Öffnen) nicht aktualisieren lasse. Schalte ich das ein, was ich normalerweise immer mache, wird die aktuelle Registerkarte wieder farblos.
AW: Registerfarbe ändern VBA
25.09.2018 17:33:27
onur
Und was für ein Wert steht in L28, wenn das Tab farblos geworden ist?
Anzeige
AW: Registerfarbe ändern VBA
25.09.2018 17:50:29
Heiko
Das ist unabhängig von dem Wert in L28, der ändert sich nicht durch schließen/öffnen der Datei bzw. durch die Aktualisierung beim Start.
Das ist ja das merkwürdige. Wenn z.B. in L28 der Wert für grün steht, wird das Register grün. Bei eingeschalteter Funktion "bei Start aktualisieren" wird das Register dann nach schließen/öffnen farblos. Ist die Funktion ausgeschaltet bleibt es grün. Der Wert in L28 ändert sich nicht.
Anzeige
AW: Registerfarbe ändern VBA
30.09.2018 01:09:27
Peter
Hallo Heiko,
das Ereignismakro "Worksheet_Calculate" habe ich heute zum ersten Mal auf meinem Excel 2007 ausprobiert. Ergebnis: Dieses Makro spricht bei mir überhaupt nicht an. Ich schlage daher vor, das "Change"-Ereignis zu verwenden. Dies ist verbunden mit dem Aufruf von Makro 1, in welchem Deine Anweisungen enthalten sind. Die Farbauswahl für das Register von Tabelle1 erfolgt, wenn Du nach der Eingabe in L28 die RETURN-Taste drückst.
Hier die Datei:
https://www.herber.de/bbs/user/124313.xlsm
Bitte mal ausprobieren, FeedBack wäre nett.
Mit freundlichem Gruß
Peter Kloßek
Anzeige
AW: Registerfarbe ändern VBA
02.10.2018 16:27:45
Heiko
Hallo Peter,
ich habe das jetzt so mal in meine Datei übertragen, das scheint zu funktionieren!
Vielen Dank für die Hilfe!!!
Gruß
Heiko
AW: Registerfarbe ändern VBA
30.09.2018 01:11:06
onur
Das müsste so klappen:
Statt
ActiveSheet.Tab.Color = ....
Workbooks("DeinDateName.xlsm").ActiveSheet.Tab.Color = ....
AW: Registerfarbe ändern VBA
02.10.2018 14:04:23
Heiko
Hallo Onur,
habe ich probiert, keine Änderung.
Wie kann ich denn hier mal die Datei hochladen? Über den File-Upload landet die dort auf dem Server. Wie gebe ich dann hier den Link an?
Gruß
Heiko
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Registerfarbe in Excel mit VBA ändern


Schritt-für-Schritt-Anleitung

Um die Registerfarbe in Excel mit VBA zu ändern, kannst du folgenden Code verwenden. Dieser Code sollte in das Worksheet_Calculate-Ereignis eingefügt werden:

Private Sub Worksheet_Calculate()
    If Range("$L$28").Value = "Geplant" Then ActiveSheet.Tab.Color = RGB(166, 166, 166)
    If Range("$L$28").Value = "Problem" Then ActiveSheet.Tab.Color = RGB(218, 150, 148)
    If Range("$L$28").Value = "Begonnen" Then ActiveSheet.Tab.Color = RGB(255, 266, 0)
    If Range("$L$28").Value = "Erledigt" Then ActiveSheet.Tab.Color = RGB(146, 208, 80)
    If Range("$L$28").Value = "" Then ActiveSheet.Tab.Color = RGB(230, 230, 230)
End Sub

Um sicherzustellen, dass die Registerfarbe auch beim Öffnen der Datei erhalten bleibt, füge den gleichen Code zusätzlich in das Workbook_Open-Ereignis ein. Gehe dazu wie folgt vor:

  1. Öffne den VBA-Editor.
  2. Doppelklicke auf "Diese Arbeitsmappe" im Projektfenster.
  3. Wähle im Dropdown-Menü links "Workbook" und rechts "Open".
  4. Füge den Code dort ein.

Häufige Fehler und Lösungen

  • Registerfarbe lässt sich nicht ändern: Achte darauf, dass du den richtigen Arbeitsblattnamen und die richtige Zelle verwendest. Manchmal kann es auch daran liegen, dass das Makro nicht gespeichert ist.

  • Farben verschwinden beim Öffnen: Wenn die Registerfarbe beim Öffnen der Datei wieder verschwindet, kann das an der Aktualisierung von externen Verknüpfungen liegen. Schalte diese Funktion im Öffnen-Dialog ab, um zu prüfen, ob das Problem weiterhin besteht.

  • Kein Effekt bei Worksheet_Calculate: Wenn das Ereignis nicht anspricht, probiere stattdessen das Worksheet_Change-Ereignis. Dieses wird ausgelöst, wenn sich der Inhalt einer Zelle ändert.


Alternative Methoden

Eine alternative Methode zur Änderung der Registerfarbe ist die Nutzung von Excel-Formeln. Du kannst auch die bedingte Formatierung nutzen, um die Schriftfarbe von Text in den Zellen zu ändern, wenn bestimmte Bedingungen erfüllt sind.

In VBA kannst du die Registerfarbe auch mit einer Schleife für mehrere Tabellenblätter gleichzeitig ändern:

Sub ChangeTabColorForAllSheets()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        If ws.Range("$L$28").Value = "Geplant" Then
            ws.Tab.Color = RGB(166, 166, 166)
        End If
    Next ws
End Sub

Praktische Beispiele

Hier einige praktische Anwendungen der Tab.Color-Eigenschaft:

  1. Projektstatus anzeigen: Verwende die Registerfarbe, um den Status von Projekten visuell darzustellen. Zum Beispiel:

    • Geplant = Grau
    • Problem = Rot
    • Begonnen = Gelb
    • Erledigt = Grün
  2. Kategorisierung von Daten: Du kannst die Farben der Registerkarten ändern, je nachdem, welche Art von Daten in den jeweiligen Arbeitsblättern enthalten ist. So hast du sofort eine Übersicht.


Tipps für Profis

  • Nutze die Workbook_SheetChange-Ereignisse, um die Registerfarbe automatisch zu aktualisieren, wenn sich die Daten ändern.
  • Experimentiere mit verschiedenen RGB-Werten, um die perfekten Farben für deine Registerkarten zu finden.
  • Stelle sicher, dass du deinen VBA-Code gut dokumentierst, damit du später leicht nachvollziehen kannst, was jeder Abschnitt tut.

FAQ: Häufige Fragen

1. Wie kann ich die Schriftfarbe der Registerkarten ändern? Leider unterstützt Excel die Änderung der Schriftfarbe der Registerkarten nicht direkt über VBA. Du kannst jedoch die Hintergrundfarbe der Registerkarten ändern, um eine visuelle Trennung zu erzeugen.

2. Warum funktioniert mein VBA-Code nicht? Überprüfe, ob das Makro ordnungsgemäß aktiviert ist und ob die richtigen Zellreferenzen verwendet werden. Achte auch darauf, dass du in der richtigen Arbeitsmappe arbeitest.

3. Kann ich die Registerfarbe automatisch ändern lassen? Ja, indem du VBA-Ereignisse wie Worksheet_Calculate oder Workbook_Open nutzt, kannst du die Registerfarbe automatisch ändern lassen, basierend auf Werten in Zellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige