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

Forumthread: VBA wenn Samstag oder Sonntag

VBA wenn Samstag oder Sonntag
18.10.2020 14:23:28
Mani
Guten Tag,
Ich färbe mit folgendem Code die Zeilen, wenn das Datum ein Samstag oder Sonntag ist.
Sub Test()
Dim c As Variant
For Each c In ActiveSheet.Range("O3:O30")
If Weekday(c) = 1 Then
c.Interior.ColorIndex = 3
ElseIf Weekday(c) = 7 Then
c.Interior.ColorIndex = 3
End If
Next c
End Sub

Ich suche eine Möglichkeit das, wenn das Datum ein Samstag ist mir das Datum mit dem vorigen Freitag überschrieben wird. Und bei einem Sonntag das Datum mit dem folgenden Montag.
Habe es schon mit c.Date -1 (Bei Samstag) probiert. Leider ohne Erfolg.
Vielen Dank
Gruß der Mani
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA wenn Samstag oder Sonntag
18.10.2020 14:27:05
Hajo_Zi
Hallo Mani,
warum nicht bedingte Formatierung, ganz ohne VBA.

Hajo, alles lesen.......owT
18.10.2020 14:38:30
Helmut
AW: Hajo, alles lesen.......owT
18.10.2020 14:45:07
Mani
Hallo Hajo
meinst du das ist Ratsam bei über 50 Spalten?
Gruß
Mani
Anzeige
AW: nur eine Bedingung
18.10.2020 14:50:04
Hajo_Zi
Hallo Mani,
es ist nur eine Bedingung bei max 16.384 Spalten.
Gruß Hajo
AW: Hajo, alles lesen.......owT
18.10.2020 15:36:30
Werner
Hallo,
Sub Test()
Dim c As Range
For Each c In Range("O3:O30")
If Weekday(c, 2) = 6 Then
c = c - 1
ElseIf Weekday(c, 2) = 7 Then
c = c + 1
End If
Next c
End Sub
Gruß Werner
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA zur Datumsanpassung für Samstag und Sonntag


Schritt-für-Schritt-Anleitung

Um in Excel VBA ein Datum, das auf einen Samstag oder Sonntag fällt, entsprechend anzupassen, kannst du folgenden Code verwenden:

Sub Test()
    Dim c As Variant
    For Each c In ActiveSheet.Range("O3:O30")
        If Weekday(c) = 1 Then ' Wenn Sonntag
            c = c + 1 ' Setze auf Montag
        ElseIf Weekday(c) = 7 Then ' Wenn Samstag
            c = c - 1 ' Setze auf Freitag
        End If
    Next c
End Sub

Dieser VBA-Code überprüft die Zellen im Bereich O3:O30. Fällt das Datum auf einen Sonntag, wird es auf den folgenden Montag gesetzt. Bei einem Samstag wird das Datum auf den vorherigen Freitag geändert.


Häufige Fehler und Lösungen

  1. Fehler: Das Datum wird nicht korrekt geändert.

    • Überprüfe, ob die Zellen im richtigen Datumsformat vorliegen und dass der Bereich korrekt definiert ist.
  2. Fehler: Das Excel-Sheet reagiert langsam.

    • Wenn du viele Spalten hast, kann die Ausführung des Codes länger dauern. In diesem Fall könnte eine bedingte Formatierung eine bessere Option sein.

Alternative Methoden

Eine einfache Möglichkeit, nur Samstage oder Sonntage anzuzeigen, ist die Verwendung der bedingten Formatierung. Diese Methode erfordert kein VBA und kann in großen Datensätzen effizienter sein.

  1. Markiere den gewünschten Bereich.
  2. Gehe zu "Start" > "Bedingte Formatierung" > "Neue Regel".
  3. Wähle "Formel zur Ermittlung der zu formatierenden Zellen verwenden".
  4. Verwende die Formel =Wochentag(A1, 2)=6 für Samstage oder =Wochentag(A1, 2)=7 für Sonntage, um die Zellen entsprechend einzufärben.

Praktische Beispiele

Beispiel 1: Samstage einfärben

Sub SamstageEinfärben()
    Dim c As Variant
    For Each c In ActiveSheet.Range("O3:O30")
        If Weekday(c, 2) = 6 Then
            c.Interior.ColorIndex = 6 ' Gelb für Samstage
        End If
    Next c
End Sub

Beispiel 2: Sonntag auf Montag setzen

Sub SonntagAufMontag()
    Dim c As Variant
    For Each c In ActiveSheet.Range("O3:O30")
        If Weekday(c) = 1 Then
            c = c + 1 ' Sonntag auf Montag setzen
        End If
    Next c
End Sub

Tipps für Profis

  • Wenn du regelmäßig mit Datumsanpassungen arbeitest, erstelle eine benutzerdefinierte Funktion in VBA.
  • Verwende die Application.ScreenUpdating = False und Application.ScreenUpdating = True Anweisungen, um die Ausführungsgeschwindigkeit zu erhöhen, insbesondere bei großen Datenmengen.
  • Überlege, ob du die Conditional Formatting-Funktion in Excel nutzen kannst, um die Übersichtlichkeit deiner Daten zu verbessern, anstatt VBA zu verwenden.

FAQ: Häufige Fragen

1. Wie kann ich Samstage und Sonntage gleichzeitig einfärben? Du kannst den VBA-Code anpassen, indem du beide Bedingungen in einer Schleife abprüfst und entsprechend einfärbst.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, der VBA-Code sollte mit Excel-Versionen ab 2007 funktionieren. Achte darauf, dass die Datumsformate korrekt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige