Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabellenregisterfarben automatisch ändern

Tabellenregisterfarben automatisch ändern
Ed
Hallo Leute
Ich habe einen Monatskalender für Terminvergaben erstellt, der mit 31 Tabellen (max. 31 Tage) arbeitet. In der Zelle D1 habe ich immer den jeweiligen Wochentag angezeigt, und jetzt würde ich gerne die Tabellenregister der Samstage und Sonntage automatisch rot darstellen. Ebenfalls habe ich die Möglichkeit die Tabelle mit einem "H" (für holiday) in der Zelle A1, die freie Termineingabe mit "dunkelgrün" abzudecken, damit man gleich sieht dass da keine Termine möglich sind. Es wäre natürlich toll wenn ich für diese mit "H" markierten Tage ebenfalls gleich die Tabellenregister z.B. rosa einfärben könnte.
Hat jemand eine Idee wie das gehen könnte?
Danke
Ed
Anzeige
AW: Tabellenregisterfarben automatisch ändern
10.02.2010 20:59:40
Christian
Hallo Ed,
Ein Bsp: (in Zelle D1 steht ein Datum, kein String)

Option Explicit
Sub TestIt()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
wks.Tab.ColorIndex = -4142
Select Case Weekday(wks.Cells(1, 4))
Case 1, 7: wks.Tab.ColorIndex = 3
End Select
If wks.Cells(1, 1) = "H" Then wks.Tab.ColorIndex = 38
Next
End Sub
Gruß
Christian
Anzeige
AW: Tabellenregisterfarben automatisch ändern
10.02.2010 22:45:16
Ed
Hallo Christian
Danke für die Hilfe. Irgendwie funktioniert es noch nicht.
Also in der Zelle D1 steht =E1 dass so formatiert ist, dass nur der Wochentag ausgeschrieben wird, und in Zelle E1 wird das ganze Datum ausgeschrieben. Z.B. wird folgendes angezeigt: Donnerstag (aus Zelle D1) und 04. März 2010 (aus der Zelle E1) linksbündig dass es schön aussieht.
Ich bin VBA mässig ein Neuling, muss ich das ganze Skript einfach im Visual Basic Editor unter Thisworkbook in ein neues Modul hinein kopieren. Sollte es sofort wirksam sein, oder muss ich noch etwas machen?
Gruss
Ed
Anzeige
AW: Tabellenregisterfarben automatisch ändern
10.02.2010 23:26:38
Christian
Hallo Ed,
der Code muss in ein allgemeines Modul.
Mit Alt+F11 in den VBA-Editor wechseln - Einfügen - Modul. Hier den Code reinkopieren.
Zum Ausführen musst du dann das Makro "TestIt" starten: In Excel - Extras - Makro - Makros... und im neuen Fenster Makro auswählen und auf Ausführen klicken.
Makros musst du hierfür naturlich erlauben, d.h unter Extras - Makro - Sicherheit musst du "Mittel" auswählen. Wenn das nicht voreingestellt ist, dann die Einstellung vornehmen, die Datei speichern und neu öffnen und beim Öffnen "Makros aktivieren" wahlen.
Gruß
Christian
Anzeige
AW: Tabellenregisterfarben automatisch ändern
11.02.2010 04:10:15
Ed
Hallo Christian
Danke für die Hilfe
Makros laufen, da ich auch eins benutze. "TestIt" ergab einen Laufzeitfehler 13 mit Vermerk "Typen unverträglich" und Select Case Weekday(wks.Cells(1, 4)) ist beim debuggen gelb markiert.
Gruss
Ed
Tabellenregisterfarben ist missverständlich,...
10.02.2010 23:44:21
Luc:-?
...Ed,
denn anscheinend willst du nicht die Registerfarben der Mappe an sich, sondern nur die Farben von Zellen ändern. Das ist ein Unterschied...!
Gruß Luc :-?
Anzeige
AW: Tabellenregisterfarben ist missverständlich,...
11.02.2010 04:14:36
Ed
Hallo Luc
Nein ich will die Registerfarben (die kleinen Tabellen "Tabs") unten in Excel verändern. Ich habe da eine Date Tabelle und 31 Tagestabellen nummeriert von 01 bis 31. Es wäre schön, wenn ich ohne die Tabelle aufzumachen schon sehe ob es Samstag oder Sonntag ist. Das Ausfüllen der Tabellenfarbe funktioniert schon mit den SA + So und den Hollidays. Das sieht man aber erst wenn man die Tabelle aufmacht.
Gruss
Ed
Anzeige
AW: Tabellenregisterfarben automatisch ändern
11.02.2010 14:32:14
Christian
Hallo,
diese Fehlermeldung bekomme ich, wenn in D1 kein Darum steht sondern ein String im Sinne von "Donnerstag" aber eben nicht 04.03.2010 mit dem Format "TTTT".
Gruß
Christian
AW: Tabellenregisterfarben automatisch ändern
11.02.2010 15:22:54
Ed
Hallo Christian
Die Zelle D1 ist mit dem Format "TTTT" formatiert, und wenn ich das Format auf "TT. MMMM JJJJ" stelle zeigt es 04. März 2010" an. Ich habe einfach in der Zelle E1 wo das Datum dargestellt wird, die Formel =Data!A1+A2-1
=Data!A1 ist in meiner ersten Tabelle die Data heisst, die Eingabezelle um den Monat zu deffinieren MM.JJJJ
A2 ist auf jeder Tagestabelle der aktuelle Tag (hier der 4.)
und die -1 benötige ich, damit auch der 4. März 2010 angezeigt wird (ohne -1 würde ja der 5. dargestellt)
Gruss
Ed
Anzeige
AW: ein Beispiel
11.02.2010 17:07:14
Ed
Hallo Christian
Das ist genau was ich möchte. Ich verstehe nicht warum es bei mir nicht geht!!
Ebenfalls wenn ich jetzt in Deiner Tabelle 7 den 21. Feb. 2010 eingebe, auch einen Sonntag, dann bleibt die Farbe grau und es wechselt nicht auf rot.
Ist bei mir das VBA Modul korrupt?
Gruss
Ed
Anzeige
AW: ein Beispiel
11.02.2010 17:07:38
Ed
Hallo Christian
Das ist genau was ich möchte. Ich verstehe nicht warum es bei mir nicht geht!!
Ebenfalls wenn ich jetzt in Deiner Tabelle 7 den 21. Feb. 2010 eingebe, auch einen Sonntag, dann bleibt die Farbe grau und es wechselt nicht auf rot.
Ist bei mir das VBA Modul korrupt?
Gruss
Ed
Anzeige
AW: ein Beispiel
11.02.2010 17:22:49
Ed
Hallo Christian
Jetzt habe ich weiter probiert mit Deiner Tabelle, und alle Register auf keine Farbe gesetzt, Tabelle 7 auf 21. März 2010, und Tabelle 1 noch ein "H" in Zelle A1 gesetzt, und dann das Makro gestartet, und jetzt ging es wieder. Wie ist das später, passiert das beim erstellen des "Monats", oder kann das auch automatisch gehen, d.h. wenn ich auf einer Tabelle das "H" einsetze, sollte das Register gerade die Farbe wechseln?
Gruss
Ed
Anzeige
AW: ein Beispiel
11.02.2010 17:42:08
Christian
Warum es bei dir nicht geht, kann ich so nicht sagen...ich kenn deine Datei ja nicht.
Bei meinem Beispiel musst du nach Änderung (wie zB. in Tabelle 7 den 21. Feb. 2010 eingeben) das Makro erneut ausführen.
Wenn das automatisch erfolgen soll, dann nimm das "Workbook_SheetChange" Ereignis wie im Beispiel von Ramses. Dieses startet automatisch bei jeder Änderung von irgendeiner Zelle in allen Tabellen, prüft ob die Zell-Adresse "A1" oder "D1" ist steigt anderfalls wieder aus.
Da dieses Makro bei jeder Änderung anschlägt, würde ich in diesem Fall nicht machen.
Bei meiner Variante musst du das Makro halt pro Monat einmal starten.
Es gäbe auch noch 'ne andere Möglichkeit: Das Makro wird nur aktiviert, wenn in der Tabelle "Data" eine Änderung erfolgt. Das wäre dann das "Worksheet_Change" Ereignis in der Tabelle "Data". Da ich aber weiß, wie deine Einträge für Feiertage zustande kommen, ist as alleine evt auch nicht ausreichend.
Gruß
Christian
Anzeige
AW: Problem gelöst
11.02.2010 17:48:01
Ed
Nochmals Danke Christian
Ich bin mit Deiner Lösung glücklich.
Gruss
Ed
AW: ein Beispiel
11.02.2010 17:40:20
Ed
Nochmals Hallo Christian
Ich hab's gefunden.
Ich hatte neben den 31 Tages Tabellen noch zwei weitere Tabellen! Eine hiess Data, und die andere Control, und beide hatten in D1 natürlich etwas anderes (Text) anstatt das erwartete Datumsformat!!
Jetzt habe ich in diesen beiden Tabellen einfach zuoberst noch eine Zeile eingefügt, und dem D1 ebenfalls einen Wochentag format gegeben.
Super, ich bin froh geht es.
Nochmals besten Dank
Ed
Anzeige
Danke für die Rückmeldung
11.02.2010 17:43:54
Christian
Gruß
Christian
das kann man aber auch abfangen...
11.02.2010 17:47:52
Christian
zb, indem man diese beiden Tabellen ausschließt

Option Explicit
Sub TestIt()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
wks.Tab.ColorIndex = -4142
If wks.Name  "Data" And wks.Name  "Control" Then
Select Case Weekday(wks.Cells(1, 4))
Case 1, 7: wks.Tab.ColorIndex = 3
End Select
If wks.Cells(1, 1) = "H" Then wks.Tab.ColorIndex = 38
End If
Next
End Sub
Gruß
Christian
Anzeige
AW: OK - das ist noch besser
11.02.2010 17:54:54
Ed
Hey, das ist ja toll
Nochmals Danke
Gruss
Ed
AW: Tabellenregisterfarben automatisch ändern
10.02.2010 21:16:26
Ramses
Hallo
Geht nur mit VBA.
Ich gehe in dem Makro davon aus, dass in D1 ein Datum steht, und dies mittels Zahlenformat zur Anzeige des Tages gebracht wird.
Das gehört in das Klassenmodul "Diese Arbeitsmappe"
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Select Case Target.Address(0, 0)
Case "D1"
For Each Sh In ActiveWorkbook.Worksheets
With Sh.Tab
If IsDate(Sh.Range("D1")) And VBA.Weekday(Sh.Range("D1"), vbMonday) > 5 Then
.Color = 255
Else
.ColorIndex = 2
End If
End With
Next
Case "A1"
For Each Sh In ActiveWorkbook.Worksheets
With Sh.Tab
If UCase(Sh.Cells(1, 1)) = "H" And VBA.Weekday(Sh.Range("D1"), vbMonday) 
Gruss Rainer
Anzeige
AW: Tabellenregisterfarben automatisch ändern
10.02.2010 22:50:33
Ed
Hallo Rainer, und besten Dank
Der ganze Code sieht gut aus, leider klappt es noch nicht. Ich nehme an dass ich etwas falsch mache, da ich ein VBA Neuling bin. Die Annahme dass in D1 ein Datum steht das mittels Zahlenformat den Wochentag darstellt ist soweit richtig.
Wie muss ich diesen Code in meine Exceldatei einbauen?
Gruss
Ed
Anzeige
AW: Tabellenregisterfarben automatisch ändern
11.02.2010 16:50:06
Ramses
Hallo
mit ALT+F11 den VB-Editor starten
Doppelklick auf "VBA Projekt DeineMappe.xls"
Doppelklick auf "Diese Arbeitsmappe"
Dort den code reinkopieren
Fertig
Gruss Rainer
AW: Die Variante geht noch nicht bei mir.
12.02.2010 09:30:25
Ed
Hallo Rainer
Obwohl ich jetzt eine Lösung habe, wollte ich Deine Lösung ebenfalls ausprobieren, leider klappt es nicht.
Ich habe meine Tabellen "Data" und "Control" so abgeändert, dass die Zellen A1 frei, und D1 ein "TTTT" format aus einem Datum anzeigt. Dann habe ich die 31 Tagestabellen mit den Namen (01), (02),......(31).
Was könnte noch schief laufen? Ich fange mich an für dieses VBA programmieren zu interessieren, das ist ja toll was man alles machen kann.
Ich Danke viel mal für die Hilfe
Gruss
Ed
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Tabellenregisterfarben automatisch ändern in Excel


Schritt-für-Schritt-Anleitung

Um die Excel-Registerfarbe automatisch zu ändern, kannst du ein einfaches VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen > Modul, um ein neues Modul hinzuzufügen.
  3. Kopiere den folgenden Code:

    Option Explicit
    Sub TestIt()
       Dim wks As Worksheet
       For Each wks In ThisWorkbook.Worksheets
           wks.Tab.ColorIndex = -4142 ' Setze die Standardfarbe zurück
           Select Case Weekday(wks.Cells(1, 4))
               Case 1, 7 ' Sonntag und Samstag
                   wks.Tab.ColorIndex = 3 ' Rot
               End Select
           If wks.Cells(1, 1) = "H" Then
               wks.Tab.ColorIndex = 38 ' Rosa für Feiertage
           End If
       Next
    End Sub
  4. Makros aktivieren:

    • Stelle sicher, dass Makros in Excel aktiviert sind. Gehe zu Extras > Makro > Sicherheit und wähle „Mittel“.
  5. Führe das Makro aus:

    • Gehe zu Extras > Makro > Makros..., wähle TestIt und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler 13 - Typen unverträglich
    Lösung: Stelle sicher, dass in Zelle D1 ein Datum steht und kein Text. Wenn D1 als Datum formatiert ist, sollte der Fehler nicht auftreten.

  • Die Registerfarbe ändert sich nicht
    Lösung: Überprüfe, ob in der Zelle A1 "H" steht und ob D1 das korrekte Datumsformat hat. Wenn du die Zellen in den Tabellen „Data“ oder „Control“ nicht richtig eingestellt hast, kann es ebenfalls zu Problemen kommen.


Alternative Methoden

Eine weitere Möglichkeit, die Excel-Registerfarbe zu ändern, ist die Verwendung des Workbook_SheetChange Ereignisses. Hier ist ein Beispiel:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Address = "$D$1" Or Target.Address = "$A$1" Then
        Call TestIt ' Führt das vorherige Makro aus
    End If
End Sub

Dieser Code sorgt dafür, dass die Registerfarbe automatisch aktualisiert wird, wenn sich der Wert in D1 oder A1 ändert.


Praktische Beispiele

Angenommen, du hast folgende Daten in deinem Kalender:

  • D1: 04.03.2020 (Format: TTTT)
  • A1: H (für einen Feiertag)

Nach dem Ausführen des Makros wird das Register für den jeweiligen Tag rot gefärbt, wenn es sich um einen Samstag oder Sonntag handelt, und rosa, wenn es ein Feiertag ist.


Tipps für Profis

  • Verwende bedingte Formatierung: Du kannst auch die bedingte Formatierung nutzen, um die Zellen innerhalb der Tabelle entsprechend zu färben. Das ist besonders hilfreich, wenn du visuelle Hinweise direkt in den Zellen haben möchtest.

  • Makros automatisieren: Überlege, das Makro so einzustellen, dass es beim Öffnen der Datei automatisch ausgeführt wird.


FAQ: Häufige Fragen

1. Wie kann ich die Registerfarbe für alle Tabellen gleichzeitig ändern?
Du kannst das oben gezeigte Makro verwenden, um die Farben für alle Tabellen in der Arbeitsmappe zu ändern.

2. Was tun, wenn sich die Registerfarbe nicht ändert?
Überprüfe, ob die Zellen D1 und A1 in jedem Tabellenblatt korrekt formatiert sind. Der Code funktioniert nur, wenn die Zellwerte den erwarteten Bedingungen entsprechen.

3. Kann ich die Farben anpassen?
Ja, im VBA-Code kannst du die ColorIndex-Werte ändern, um andere Farben zu wählen. Beispielsweise steht 3 für rot und 38 für rosa.

4. Ist VBA notwendig, um die Registerfarben zu ändern?
Ja, die automatische Änderung der Registerfarben in Excel erfordert die Nutzung von VBA, da es keine eingebaute Funktion dafür gibt.

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