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

Forumthread: Wochenenden und Feiertage farbig unterlegen

Wochenenden und Feiertage farbig unterlegen
10.02.2009 20:59:40
Lenni
Moin Excellianer!
Meine Versuche enden im Nix... ...und im Archiv finde ich vieles, aber auch das kann ich für meine Fragestellung irgendwie nicht umsetzen.
Vorab: Bedingte Formatierung ist nicht möglich, da diese Möglichkeit teilweise bereits voll ausgeschöpft ist. Deshalb ist eine Lösung mit VBA für mich die einzige Möglichkeit.
In der Spalte C16:C5001 steht jeweils pro Zelle ein Datum im Format tt.mm.yyyy
Wenn ein Datum Sonnabend, Sonntag und/oder einem Feiertag* entspricht, dann soll die Zeile in der dieses Datum steht, von Spalte B bis Spalte O, blau unterlegt werden.
ABER: ....es soll nicht fest formatiert sein! Wenn in der Zelle das Datum zu einem Werktag wechselt, dann soll alles wieder "normal" sein (Zellenhintergrund weiß und die Schrift schwarz bzw. automatisch). Dieser Datumswechsel ist ständig, da Daten Zeit-Unspezisches eingegeben werden und dann greift eine Auto-Sortierung nach jeder Eingabe.
* ...wenn das mit dem Feiertagen zu kompliziert ist, dann muss es nicht unbedingt sein. Es wäre alllerdings kein Problem,die jeweiligen Jahres-Feiertage in einem anderen Tabellenblatt in einer Spalte zu hinterlegen.
Vielen Dank für Eure Hilfe!
Viele Grüße aus dem hohen Norden!
Lenni

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wochenenden und Feiertage farbig unterlegen
10.02.2009 21:18:00
Daniel
Hi
dann musst du ein Event-Gesteuertes Makro schreiben, daß bei der Änderung eines Zellwertes diesen prüft und die Formatierung ändert, mal hier so als beispiel:
https://www.herber.de/bbs/user/59321.xls
Gruß, Daniel
AW: Wochenenden und Feiertage farbig unterlegen
10.02.2009 22:07:41
Lenni
Danke Daniel!
Also ich hatte eben gerade bereits geantwortet und abgeschickt... ...aber der Beitrag "is nix dah"?!!
Nun gut! ...nochmals >
Ein erster kleiner Test verlief positiv!! ...ich habe allerdings Schwierigkeiten bei der Umsetzung, die Feiertage aus einem anderen Tabellenblatt zu holen... Wenn es möglich ist und Du weißt wie das geht: Wäre Dir hier für einen Tip dankbar!
Danke Daniel!
Sollte ich mich heute Abend nicht mehr melden > ...ich muss morgen früh raus! Will sagen > muss ins Bett! Ich melde mich spätestens morgen Nachmittag wieder!
Gruß
Lenni

Anzeige
AW: Wochenenden und Feiertage farbig unterlegen
10.02.2009 22:13:39
Daniel
Hi
wenn du die Feiertagsdaten aus einem anderen Blatt holst, musst du doch nur die entsprechende vollständige Referenz angeben:

If WorksheetFunction.CountIf(Sheets("xyz").Range("D:D"), Zelle.Value) > 0 Then


Gruß, Daniel

Anzeige
hier für das Wochenende ...
10.02.2009 21:23:23
Matthias
Hallo Lenni
'ColorIndex anpassen !

Sub Lenni()
Dim rngLenni As Range
Range("B16:O5001").Interior.ColorIndex = xlNone
For Each rngLenni In Range("C16:C5001")
If Weekday(rngLenni) = 1 Or Weekday(rngLenni) = 7 Then
Range("B" & rngLenni.Row & ":O" & rngLenni.Row).Interior.ColorIndex = 7
End If
Next
End Sub


Besser vor Range noch das Sheet referenzieren.
Das mit die Feiertage geht sicher auch, aber die müssten dann ja irgendo stehen
Das Makro kannst Du ja dann im Worksheet_Change Ereignis aufrufen.
Gruß Matthias

Anzeige
hier noch mein Beispiel ...
10.02.2009 21:37:07
Matthias
Hallo Lenni
Die Datei für Deinen Datenbereich war für den Upload zu groß.
Hab mal ne abgespeckte Version erstellt:
Im Range("C16:C50") benutze ich einen Namen
Name=("Bereich")
https://www.herber.de/bbs/user/59323.xls
Gruß Matthias
Anzeige
AW: hier noch mein Beispiel ...
10.02.2009 22:17:00
Lenni
Moin Matthias!! ...ich freue mich, dass Du mir wieder mal unter die Arme greifst! Ich finde nach wie vor zahlreiche Beiträge (...da "luscher" ich ja gerne mal rein!) von Dir erstklassig aufgemacht! Da versteht man sofort Zusammenhänge!!
Zu Erst: Vielen Dank!
Ich habe Deine Vorschläge ohne Probleme umsetzen können... ...aber leider werden nun auch alle Zellen unterhalb ab Eintrags-Ende in der Tabelle lila eingefärbt...
Und die Feiertage hätte ich auch in einer anderen Tabelle hinterlegt.
Danke nochmals Matthias!!
Sollte ich mich heute Abend nicht mehr melden > ...ich muss morgen früh raus! Will sagen > muss ins Bett! Ich melde mich spätestens morgen Nachmittag wieder!
Gruß
Lenni

Anzeige
hier noch mal ein 2.Beispiel ...
11.02.2009 05:15:00
Matthias
Hallo Lenni
hab nochmal überarbeitet:
in Tabelle1


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Bereich")) Is Nothing And Target.Count = 1 Then
Lenni
End If
End Sub


Range("Bereich") ist ein Name und bezieht sich auf C16:C50 der Tabelle1



in ein Modul

Option Explicit
Sub Lenni()
Dim LoLenni As Range
On Error GoTo ErrExit
With Worksheets("Tabelle1")
.Range("B16:O50").Interior.ColorIndex = xlNone
For Each LoLenni In .Range("Bereich")
If Weekday(LoLenni) = 1 Or Weekday(LoLenni) = 7 Then
.Range("B" & LoLenni.Row & ":O" & LoLenni.Row).Interior.ColorIndex = 5
End If
Next
End With
Exit Sub
ErrExit:
MsgBox "mindestens ein Wert im Bereich ist kein Datum"
On Error GoTo 0
End Sub


Bild:
Userbild
der Bereich der Daten ist zusätzlich bedingt formatiert und hebt sich somit ab.
Formeln ab C17 (=C16+1) usw.



hier das Sheet
https://www.herber.de/bbs/user/59334.xls


Gruß Matthias
Anzeige
AW: Danke Euch Zweien!! ...aber...
11.02.2009 19:35:00
Lenni
Moin Daniel! Moin Matthias!
....nun, endlich wieder zu Hause und nach einigen Versuchen...
  Erst mal vielen Dank Euch Beiden!   ...Eure Vorschläge funktionieren, wenn ich sie in kleinen Extra-Dateien teste tadellos!!
Aber wenn ich sie in mein Hauptprojekt integriere, dann klappt das nicht so richtig. Leider kann ich nicht so ohne weiteres eine Demodatei hochladen, meine Datei ist einfach zu groß. Und eine Datei entsprechend basteln dauert seine Zeit und hängt von einigen Überlegungen ab...
Die Probleme entstehen wahrscheinlich dadurch, dass ich ja ein Change-Ereignis für das betreffende Tabellenblatt schon habe und ich glaube, da kollidiert was miteinander...
Dein Vorschlag Daniel, geht überhaupt nicht in meiner Hauptdatei (natürlich mit angepaßten Bezügen!). Vielleicht habe ich da irgendwo einen kleinen aber feinen Fehler übersehen.... Ich schau noch mal.
Deine Vorschläge Matthias funktionieren auch in meiner Hauptdatei, aber leider werden alle leere Zeilen ab der letzten Zeile eingefärbt... Auch mit Deinem letzten Vorschlag.
Ich schau noch mal! ...und nochmals vielen Dank Euch beiden!
Gruß
Lenni

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Wochenenden und Feiertage farbig unterlegen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle einen neuen Arbeitsblatt oder öffne dein bestehendes Arbeitsblatt mit den Datumsangaben in der Spalte C (z.B. C16:C5001).

  2. Füge den folgenden VBA-Code ein:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Gehe zu Einfügen > Modul und füge den Code ein:
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("C16:C5001")) Is Nothing Then
           Call FormatDates
       End If
    End Sub
    
    Sub FormatDates()
       Dim rng As Range
       Dim Feiertage As Range
       Set Feiertage = Sheets("Feiertage").Range("A1:A10") ' Feiertage in einem anderen Blatt
    
       Range("B16:O5001").Interior.ColorIndex = xlNone
       For Each rng In Range("C16:C5001")
           If Weekday(rng.Value) = 1 Or Weekday(rng.Value) = 7 Then
               Range("B" & rng.Row & ":O" & rng.Row).Interior.ColorIndex = 5 ' Wochenenden einfärben
           ElseIf Application.WorksheetFunction.CountIf(Feiertage, rng.Value) > 0 Then
               Range("B" & rng.Row & ":O" & rng.Row).Interior.ColorIndex = 3 ' Feiertage einfärben
           End If
       Next rng
    End Sub
  3. Schließe den VBA-Editor und kehre zu Excel zurück.

  4. Gebe einige Daten in die Spalte C ein. Die entsprechenden Zeilen sollten nun automatisch eingefärbt werden, wenn sie auf ein Wochenende oder einen Feiertag fallen.


Häufige Fehler und Lösungen

  • Problem: Die Zeilen werden auch für leere Zellen eingefärbt.

    • Lösung: Überprüfe den Code und stelle sicher, dass nur Zellen mit gültigen Datumswerten verarbeitet werden. Füge eine Bedingung hinzu, die leere Zellen ignoriert.
  • Problem: Feiertage werden nicht korrekt erkannt.

    • Lösung: Stelle sicher, dass die Feiertage im richtigen Format in dem angegebenen Bereich auf dem Blatt „Feiertage“ stehen.

Alternative Methoden

Eine einfache Möglichkeit zur bedingten Formatierung von Feiertagen in Excel ist die Verwendung der Regel „Zellwert ist“ in der bedingten Formatierung. Du kannst für Wochenenden und Feiertage separate Regeln erstellen:

  1. Markiere den Bereich B16:O5001.
  2. Gehe zu Start > Bedingte Formatierung > Neue Regel.
  3. Wähle Formel zur Ermittlung der zu formatierenden Zellen verwenden.
  4. Verwende die Formel:
    =WOCHENTAG($C16, 2) > 5
  5. Wähle die gewünschte Formatierung aus und wiederhole den Vorgang für Feiertage.

Praktische Beispiele

Hier sind einige Beispiele, wie du Feiertage in Excel farbig markieren kannst:

  • Excel Feiertage einfärben: Wenn der 3. Oktober (Tag der Deutschen Einheit) auf ein Datum in Spalte C fällt, wird die gesamte Zeile blau eingefärbt.
  • Excel Wochenende und Feiertage farbig markieren: Mit der oben beschriebenen VBA-Lösung werden alle Samstage und Sonntage sowie die Feiertage automatisch in den Bereichen B bis O markiert.

Tipps für Profis

  • Nutze Named Ranges: Wenn du häufig auf bestimmte Bereiche zugreifen musst, erstelle benannte Bereiche in Excel. Dies macht deinen VBA-Code lesbarer und einfacher zu warten.
  • Debugging im VBA: Verwende Debug.Print im Code, um Werte zu überprüfen, während das Makro läuft. So kannst du sicherstellen, dass deine Bedingungen wie gewünscht funktionieren.

FAQ: Häufige Fragen

1. Wie kann ich Feiertage in einem anderen Arbeitsblatt verwalten? Du kannst einen Bereich in einem anderen Arbeitsblatt definieren und in deinem VBA-Code darauf verweisen, wie im obenstehenden Beispiel.

2. Funktioniert das auch in Excel für Mac? Ja, die VBA-Methoden sind plattformübergreifend, solange du die Makros entsprechend aktivierst.

3. Was ist, wenn ich mehr Feiertage hinzufügen möchte? Erweitere einfach den Bereich Feiertage im Code, um neue Feiertage zu berücksichtigen. Füge die neuen Daten in das entsprechende Tabellenblatt ein.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige