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

Forumthread: Registerfarbe ändern wenn Zelle nicht leer

Registerfarbe ändern wenn Zelle nicht leer
Alexandra
Hallo an alle,
kann man eigentlich ein Blattevent schreiben, das automatisch die Registerfarbe eines Arbeitsblattes auf "Keine Farbe" umstellt, wenn in einem anderen (Übersichts-)Blatt eine bestimmte Zelle nicht mehr leer ist?
Ich habe in meiner Arbeitsmappe mehrere Blätter mit Einzelberechnungen und ein Übersichtsblatt. Wenn ein Einzelberechnungsblatt upgedated wurde, notiere ich das Datum des Updates im Übersichtsblatt.
Blätter, die upgedated werden müssen, sind rot markiert. Wenn sie upgedated wurden, ändere ich die Registerblattfarbe. Ich möchte gern, dass es automatisch läuft.
Gruss,
Alexandra
Anzeige
AW: Registerfarbe ändern wenn Zelle nicht leer
20.07.2009 15:29:16
Jens
Hallo Alexandra
Dazu müsste man Deinen Tabellenaufbau kennen (Beispiel-Datei hochladen), um den Code zu integrieren.
Gruß aus dem Sauerland
Jens
AW: Registerfarbe ändern wenn Zelle nicht leer
20.07.2009 15:34:48
David
Hallo Alexandra,
in den Code der Arbeitsmappe, die die zu überwachende Zelle enthält:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$D$45" Then
ActiveWorkbook.Sheets("DW_Exp2 (2)").Tab.ColorIndex = 10
End If
End Sub
Die Target.Adress ist dabei deine überwachte Zelle. ...Sheets("...") musst du dann anpassen auf das Blatt, dessen Registerkarte geändert werden soll. Den Colorindex kriegst du am schnellsten über den Makrorecorder raus. 4 ist z. Bsp. rot.
Gruß
David
Anzeige
AW: Registerfarbe ändern wenn Zelle nicht leer
20.07.2009 15:38:42
David
Hallo Alex,
das Prinzip stimmt schon, aber ich hab deinen Text nicht aufmerksam gelesen. Natürlich muß man noch die Abfrage einbauen, ob die Zelle einen bestimmten Wert hat.
Das ginge nach dem Muster:
If Target.Value = ? Then
Dazu müsste man aber wirklich deine Tabelle besser kennen. Vielleicht reicht dir das aber schon, um es selbst nachzubauen.
Gruß
David
Anzeige
Sheets("Tabelle1").Tab.ColorIndex = ...
20.07.2009 15:37:56
NoNet
Hallo Alexandra,
kopiere den folgenden Code in das Klassenmodul des Blattes "Übersicht" :
Private Sub Worksheet_Calculate()
TabFarben
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
TabFarben
End Sub
Sub TabFarben()
Sheets("Tabelle1").Tab.ColorIndex = IIf(IsEmpty([A1]), xlNone, 3) 'xlnone = -4142 / 3=Rot
Sheets("Tabelle2").Tab.ColorIndex = IIf(IsEmpty([A2]), xlNone, 3) 'xlnone = -4142
Sheets("Tabelle3").Tab.ColorIndex = IIf(IsEmpty([A3]), xlNone, 3) 'xlnone = -4142
End Sub
Die Zelladressen und die Namen der Blätter bitte noch an Deine Mappe anpassen !
Gruß, NoNet
Anzeige
AW: Sheets("Tabelle1").Tab.ColorIndex = ...
21.07.2009 13:15:31
Alexandra
Hallo NoNet,
vielen Dank für den Code, ich habe ihn jetzt übernommen, allerdings mit einer Änderung:
wenn ich xlNone, 3 schrieb, dann wurde die Tabfarbe aller anderen Blätter ausser dem gewünschten geändert. Ich habe also nur die Reihenfolge umgedreht und jetzt funktioniert es wie gewünscht.
Anzeige
AW: Sheets("Tabelle1").Tab.ColorIndex = ...
21.07.2009 15:36:17
Alexandra
Hallo,
ich habe noch ein Problem übersehen: wenn man neben dieser Datei noch andere Dateien öffnet und der Fokus sich dann auf diese neugeöffneten Dateien verschiebt, dann gibt der Code eine Fehlermeldung heraus, weil er ja die Blattnamen nicht in den neuen Dateien findet. Kann man den Fokus irgendwie auf der Urpsrungsdatei verankern? Der Name dieser Datei ändert sich jede Woche.
Ich weiss nicht, ob es wichtig ist, aber:
Abhängig von Kalenderwoche, heißt die Datei e.g. "Bericht KW28", "Bericht KW29", "Bericht KW30" etc.
Die Nummer der Kalenderwoche ist übrigens als Name "KW" definiert.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Registerfarbe ändern, wenn Zelle nicht leer


Schritt-für-Schritt-Anleitung

Um die Registerfarbe in Excel zu ändern, wenn eine bestimmte Zelle nicht leer ist, kannst du den folgenden VBA-Code verwenden. Dieser wird im Klassenmodul des Übersichtsblatts eingefügt:

  1. Öffne Deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle im Projektfenster das Blatt "Übersicht" aus.

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Private Sub Worksheet_Calculate()
       TabFarben
    End Sub
    
    Private Sub Worksheet_Change(ByVal Target As Range)
       TabFarben
    End Sub
    
    Sub TabFarben()
       Sheets("Tabelle1").Tab.ColorIndex = IIf(IsEmpty([A1]), xlNone, 3) 'xlnone = -4142 / 3=Rot
       Sheets("Tabelle2").Tab.ColorIndex = IIf(IsEmpty([A2]), xlNone, 3)
       Sheets("Tabelle3").Tab.ColorIndex = IIf(IsEmpty([A3]), xlNone, 3)
    End Sub
  4. Passe die Zelladressen (A1, A2, A3) und die Blattnamen (Tabelle1, Tabelle2, Tabelle3) an Deine Bedürfnisse an.

  5. Schließe den VBA-Editor und teste die Funktion, indem Du Daten in die überwachten Zellen eingibst.


Häufige Fehler und Lösungen

  • Fehler: "Excel kann keine neuen Zellen einfügen, weil nicht leere Zellen über das Ende des Arbeitsblattes."

    • Überprüfe, ob in den Zielzellen Werte stehen und ob genügend Platz auf dem Arbeitsblatt vorhanden ist.
  • Fehler: "Excel Registerfarbe lässt sich nicht ändern."

    • Stelle sicher, dass Du den Code im richtigen Blattmodul eingefügt hast und dass die Blattnamen korrekt sind.

Alternative Methoden

Falls Du lieber keine VBA-Makros verwenden möchtest, kannst Du Folgendes tun:

  1. Verwende bedingte Formatierung:

    • Wähle die Registerkarten der Blätter aus und gehe zu „Start“ -> „Bedingte Formatierung“.
    • Setze eine Regel, die die Farbe der Registerkarte ändert, wenn die Zelle nicht leer ist. Beachte, dass dies in der Standardversion von Excel nicht direkt möglich ist.
  2. Verwende eine Schaltfläche:

    • Erstelle eine Schaltfläche, die beim Klicken die Registerfarbe ändert, basierend auf den Werten in den Zellen.

Praktische Beispiele

Ein Beispiel für den VBA-Code würde so aussehen:

Private Sub Worksheet_Change(ByVal Target As Range)
   If Not IsEmpty(Target) Then
       Sheets("Tabelle1").Tab.ColorIndex = 3 'Rot
   Else
       Sheets("Tabelle1").Tab.ColorIndex = xlNone 'Keine Farbe
   End If
End Sub

In diesem Beispiel wird die Registerfarbe auf Rot gesetzt, wenn die überwachte Zelle nicht leer ist.


Tipps für Profis

  • Nutze den Makrorecorder, um die ColorIndex-Werte für verschiedene Farben herauszufinden.
  • Teste Deinen Code in einer Kopie Deiner Arbeitsmappe, um Datenverlust zu vermeiden.
  • Halte Deine Excel-Version stets aktuell, um die besten Funktionen nutzen zu können.

FAQ: Häufige Fragen

1. Wie kann ich die Registerfarbe ändern, wenn die Zelle einen bestimmten Wert hat? Du kannst den Code so anpassen, dass er auf einen bestimmten Wert prüft, indem Du die Zeile If Not IsEmpty(Target) durch If Target.Value = "dein Wert" ersetzt.

2. Funktioniert dieser VBA-Code in allen Excel-Versionen? Ja, der Code sollte in den meisten modernen Excel-Versionen funktionieren (Excel 2010 und neuer). Achte darauf, dass Makros aktiviert sind.

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