Excel VBA – Wochenenden hervorheben
Dieser Beitrag ist ein Teil der VBA Grundlagen Serie.
Hallo, in diesem Artikel zeige ich Ihnen wie Sie mithilfe von einer For Next
Schleife Wochenenden in einer Zelle farblich markieren können.
In der unteren Tabelle sehen Sie links das Datum und rechts den dazugehörigen Wochentag (Format TTTT).[PostTopVBA]
Wir wollen nun bei allen Zellen, die einen Samstag bzw. Sonntag enthalten, einen blauen Hintergrund hinterlegen. Dazu verwenden wir die Eigenschaft ColorIndex
des Objekts Interior
(Hintergrund der Zelle). Anbei ein Überblick über die verschiedenen Farben.
Zunächst definieren wir zwei Variablen für die Schleife sowie die Tabelle mit der wir arbeiten wollen.
Sub WochenendenHervorheben() Dim Zeile As Long Dim ZeileEnd As Long With Tabelle1 End With End Sub
Nun zählen wir die Anzahl von Zeilen in dem verwendeten Bereich und schreiben diese in die Variable ZeileEnd
. Damit haben wir die letzte Zeile.
ZeileEnd = .UsedRange.Rows.Count
Nun lassen wir alle Zeilen, von der ersten bis zur letzten, durchgehen.
For Zeile = 1 To ZeileEnd Next Zeile
[PostMiddleVBA]
Innerhalb der Schleife prüfen wir ob der Inhalt der jeweiligen Zelle in der ersten Spalte, also das Datum, ein Wochenende ist. Für diese Prüfung verwenden wir die Funktion Weekday
. Diese Funktion liefert uns für den Sonntag den Wert 1 und für den Samstag den Wert 7.
If Weekday(.Cells(Zeile, 1).Value) = 1 Or Weekday(.Cells(Zeile, 1).Value) = 7 Then Else End If
Wenn ein Wochenende ermittelt wird der Hintergrund mit der Farbe blau (ColorIndex 23
) eingefärbt. Ansonsten werden evtl. vorhandenen Hintergrundfarben entfernt. Dazu verwenden wir die Konstante xlColorIndexNone
.
If Weekday(.Cells(Zeile, 1).Value) = 1 Or Weekday(.Cells(Zeile, 1).Value) = 7 Then .Cells(Zeile, 1).Interior.ColorIndex = 23 Else .Cells(Zeile, 1).Interior.ColorIndex = xlColorIndexNone End If
Führen Sie nun das Makro aus und betrachten Sie das Ergebnis.
Anbei das komplette Makro:
Sub WochenendenHervorheben() Dim Zeile As Long Dim ZeileEnd As Long With Tabelle1 ZeileEnd = .UsedRange.Rows.Count For Zeile = 1 To ZeileEnd If Weekday(.Cells(Zeile, 1).Value) = 1 Or Weekday(.Cells(Zeile, 1).Value) = 7 Then .Cells(Zeile, 1).Interior.ColorIndex = 23 Else .Cells(Zeile, 1).Interior.ColorIndex = xlColorIndexNone End If Next Zeile End With End Sub
[VbaMakrosBuch]
[PostBottomVBA]
Quellen:
Adding Color to Excel Worksheets by Using the ColorIndex Property
Bernd Held – VBA mit Excel: Das umfassende Handbuch
Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.
Bildnachweis:
MSDN Microsoft
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!