Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
696to700
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
696to700
696to700
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Monatskalender Wochenende markieren

Monatskalender Wochenende markieren
16.11.2005 17:37:40
markus
Hallo zusammen,
ich habe einen Monatskalender erstellt, den ihr unter folgendem Link öffnen könnt.
https://www.herber.de/bbs/user/28444.xls
Ich möchte folgendes erreichen:
Die Wochenenden und die Feiertage sollen automatisch grau hinterlegt werden.
Es handelt sich um 12 solche Blätter von Januar bis Dezember.
Ich habe es folgendermaßen versucht:
Ich habe eine User Form erstellt in der ich das gewünschte Jahr wähle und dann auslöse dann werden anschließend die Wochenenden und Feiertage grau markiert.
Bitte helft mir da ich einfach nicht weiterkomme.
Vielen dank im voraus
MFG
Markus Wagner

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Monatskalender Wochenende markieren
16.11.2005 17:56:43
Fritz
Hallo Markus,
vielleicht helfen Dir diese 3 Funktionen.
Bei Übergabe eines Datums ermittelt es, ob es ein Feiertag ist (Funktion "IstFeiertag" und Funktion "HolOsterDatum").
Die Funktion "WoEnde" ermittelt anhand des Datums, ob es ein SA oder SO ist
Gruß
Fritz

Function IstFeiertag(Datum As Date) As Boolean
'Prüft, ob das angegebene Datum ein gesetzlicher
'Feiertag ist, und liefert ggf. dessen Namen zurück
Dim Osterdatum As Date
If Day(Datum) = 1 And Month(Datum) = 1 Then
IstFeiertag = True
Feiertag = "Neujahr"
Exit Function
ElseIf Day(Datum) = 1 And Month(Datum) = 5 Then
IstFeiertag = True
Feiertag = "1. Mai"
Exit Function
ElseIf Day(Datum) = 3 And Month(Datum) = 10 Then
IstFeiertag = True
Feiertag = "Tag der Deutschen Einheit"
Exit Function
ElseIf Day(Datum) = 25 And Month(Datum) = 12 Then
IstFeiertag = True
Feiertag = "1. Weihnachtstag"
Exit Function
ElseIf Day(Datum) = 26 And Month(Datum) = 12 Then
IstFeiertag = True
Feiertag = "2. Weihnachtstag"
Exit Function
ElseIf Day(Datum) = 24 And Month(Datum) = 12 Then
IstFeiertag = True
Feiertag = "Heiligabend"
Exit Function
ElseIf Day(Datum) = 31 And Month(Datum) = 12 Then
IstFeiertag = True
Feiertag = "Silvester"
Exit Function
Else
Osterdatum = HolOsterdatum(Year(Datum))
If Datum = Osterdatum - 2 Then
IstFeiertag = True
Feiertag = "Karfreitag"
Exit Function
ElseIf Datum = Osterdatum Then
IstFeiertag = True
Feiertag = "Ostersonntag"
Exit Function
ElseIf Datum = Osterdatum + 1 Then
IstFeiertag = True
Feiertag = "Ostermontag"
Exit Function
ElseIf Datum = Osterdatum + 39 Then
IstFeiertag = True
Feiertag = "Himmelfahrt"
Exit Function
ElseIf Datum = Osterdatum + 49 Then
IstFeiertag = True
Feiertag = "Pfingstsonntag"
Exit Function
ElseIf Datum = Osterdatum + 50 Then
IstFeiertag = True
Feiertag = "Pfingstmontag"
Exit Function
End If
End If
IstFeiertag = False
End Function


Function HolOsterdatum(Jahr As Integer) As Date
'Berechnet das Osterdatum eines Jahres nach Carl Friedrich Gauß
Dim a As Integer, b As Integer, c As Integer
Dim d As Integer, e As Integer
Dim Tag As Integer, Monat As Integer
a = Jahr Mod 19
b = Jahr Mod 4
c = Jahr Mod 7
d = (19 * a + 24) Mod 30
e = (2 * b + 4 * c + 6 * d + 5) Mod 7
Tag = 22 + d + e
Monat = 3
If Tag > 31 Then
Tag = d + e - 9
Monat = 4
ElseIf Tag = 26 And Monat = 4 Then
Tag = 19
ElseIf Tag = 25 And Monat = 4 And d = 28 And e = 6 And a > 10 Then
Tag = 18
End If
HolOsterdatum = DateSerial(Jahr, Monat, Tag)
End Function


Function WoEnde(Datum As Date) As String
WoEnde = (Format(Day(Datum) & "." & Month(Datum) & "." & Year(Datum), "DDDD"))
End Function

Anzeige
AW: Monatskalender Wochenende markieren
16.11.2005 17:58:59
Fritz
Hallo Markus,
vielleicht helfen Dir diese 3 Funktionen.
Gruß
Fritz

Function IstFeiertag(Datum As Date) As Boolean
'Prüft, ob das angegebene Datum ein gesetzlicher
'Feiertag ist, und liefert ggf. dessen Namen zurück
Dim Osterdatum As Date
If Day(Datum) = 1 And Month(Datum) = 1 Then
IstFeiertag = True
Feiertag = "Neujahr"
Exit Function
ElseIf Day(Datum) = 1 And Month(Datum) = 5 Then
IstFeiertag = True
Feiertag = "1. Mai"
Exit Function
ElseIf Day(Datum) = 3 And Month(Datum) = 10 Then
IstFeiertag = True
Feiertag = "Tag der Deutschen Einheit"
Exit Function
ElseIf Day(Datum) = 25 And Month(Datum) = 12 Then
IstFeiertag = True
Feiertag = "1. Weihnachtstag"
Exit Function
ElseIf Day(Datum) = 26 And Month(Datum) = 12 Then
IstFeiertag = True
Feiertag = "2. Weihnachtstag"
Exit Function
ElseIf Day(Datum) = 24 And Month(Datum) = 12 Then
IstFeiertag = True
Feiertag = "Heiligabend"
Exit Function
ElseIf Day(Datum) = 31 And Month(Datum) = 12 Then
IstFeiertag = True
Feiertag = "Silvester"
Exit Function
Else
Osterdatum = HolOsterdatum(Year(Datum))
If Datum = Osterdatum - 2 Then
IstFeiertag = True
Feiertag = "Karfreitag"
Exit Function
ElseIf Datum = Osterdatum Then
IstFeiertag = True
Feiertag = "Ostersonntag"
Exit Function
ElseIf Datum = Osterdatum + 1 Then
IstFeiertag = True
Feiertag = "Ostermontag"
Exit Function
ElseIf Datum = Osterdatum + 39 Then
IstFeiertag = True
Feiertag = "Himmelfahrt"
Exit Function
ElseIf Datum = Osterdatum + 49 Then
IstFeiertag = True
Feiertag = "Pfingstsonntag"
Exit Function
ElseIf Datum = Osterdatum + 50 Then
IstFeiertag = True
Feiertag = "Pfingstmontag"
Exit Function
End If
End If
IstFeiertag = False
End Function


Function HolOsterdatum(Jahr As Integer) As Date
'Berechnet das Osterdatum eines Jahres nach Carl Friedrich Gauß
Dim a As Integer, b As Integer, c As Integer
Dim d As Integer, e As Integer
Dim Tag As Integer, Monat As Integer
a = Jahr Mod 19
b = Jahr Mod 4
c = Jahr Mod 7
d = (19 * a + 24) Mod 30
e = (2 * b + 4 * c + 6 * d + 5) Mod 7
Tag = 22 + d + e
Monat = 3
If Tag > 31 Then
Tag = d + e - 9
Monat = 4
ElseIf Tag = 26 And Monat = 4 Then
Tag = 19
ElseIf Tag = 25 And Monat = 4 And d = 28 And e = 6 And a > 10 Then
Tag = 18
End If
HolOsterdatum = DateSerial(Jahr, Monat, Tag)
End Function


Function WoEnde(Datum As Date) As String
WoEnde = (Format(Day(Datum) & "." & Month(Datum) & "." & Year(Datum), "DDDD"))
End Function

Anzeige
AW: Monatskalender Wochenende markieren
16.11.2005 17:59:25
Fritz
-f
Hallo Markus,
vielleicht helfen Dir diese 3 Funktionen.
Gruß
Fritz

Function IstFeiertag(Datum As Date) As Boolean
'Prüft, ob das angegebene Datum ein gesetzlicher
'Feiertag ist, und liefert ggf. dessen Namen zurück
Dim Osterdatum As Date
If Day(Datum) = 1 And Month(Datum) = 1 Then
IstFeiertag = True
Feiertag = "Neujahr"
Exit Function
ElseIf Day(Datum) = 1 And Month(Datum) = 5 Then
IstFeiertag = True
Feiertag = "1. Mai"
Exit Function
ElseIf Day(Datum) = 3 And Month(Datum) = 10 Then
IstFeiertag = True
Feiertag = "Tag der Deutschen Einheit"
Exit Function
ElseIf Day(Datum) = 25 And Month(Datum) = 12 Then
IstFeiertag = True
Feiertag = "1. Weihnachtstag"
Exit Function
ElseIf Day(Datum) = 26 And Month(Datum) = 12 Then
IstFeiertag = True
Feiertag = "2. Weihnachtstag"
Exit Function
ElseIf Day(Datum) = 24 And Month(Datum) = 12 Then
IstFeiertag = True
Feiertag = "Heiligabend"
Exit Function
ElseIf Day(Datum) = 31 And Month(Datum) = 12 Then
IstFeiertag = True
Feiertag = "Silvester"
Exit Function
Else
Osterdatum = HolOsterdatum(Year(Datum))
If Datum = Osterdatum - 2 Then
IstFeiertag = True
Feiertag = "Karfreitag"
Exit Function
ElseIf Datum = Osterdatum Then
IstFeiertag = True
Feiertag = "Ostersonntag"
Exit Function
ElseIf Datum = Osterdatum + 1 Then
IstFeiertag = True
Feiertag = "Ostermontag"
Exit Function
ElseIf Datum = Osterdatum + 39 Then
IstFeiertag = True
Feiertag = "Himmelfahrt"
Exit Function
ElseIf Datum = Osterdatum + 49 Then
IstFeiertag = True
Feiertag = "Pfingstsonntag"
Exit Function
ElseIf Datum = Osterdatum + 50 Then
IstFeiertag = True
Feiertag = "Pfingstmontag"
Exit Function
End If
End If
IstFeiertag = False
End Function


Function HolOsterdatum(Jahr As Integer) As Date
'Berechnet das Osterdatum eines Jahres nach Carl Friedrich Gauß
Dim a As Integer, b As Integer, c As Integer
Dim d As Integer, e As Integer
Dim Tag As Integer, Monat As Integer
a = Jahr Mod 19
b = Jahr Mod 4
c = Jahr Mod 7
d = (19 * a + 24) Mod 30
e = (2 * b + 4 * c + 6 * d + 5) Mod 7
Tag = 22 + d + e
Monat = 3
If Tag > 31 Then
Tag = d + e - 9
Monat = 4
ElseIf Tag = 26 And Monat = 4 Then
Tag = 19
ElseIf Tag = 25 And Monat = 4 And d = 28 And e = 6 And a > 10 Then
Tag = 18
End If
HolOsterdatum = DateSerial(Jahr, Monat, Tag)
End Function


Function WoEnde(Datum As Date) As String
WoEnde = (Format(Day(Datum) & "." & Month(Datum) & "." & Year(Datum), "DDDD"))
End Function

-f
Anzeige
AW: Monatskalender Wochenende markieren
16.11.2005 18:35:27
Fritz
Hallo Markus,
habe versehentlich die Antwort 3 mal hochgeladen. Außerdem war noch ein Fehler drin.
Die Funktion woende lieferte den Wochentag zurück.
Jetzt liefert er True oder False.
Ich habe es in Deine Beispieldatei eingebaut.
https://www.herber.de/bbs/user/28448.xls
Gruß
Fritz
AW: Monatskalender Wochenende markieren
16.11.2005 19:08:16
markus
Danke Fritz,
das funktioniert bestens.
Nur noch zwei Kleinigkeiten.
Wie kann ich die Markierung begrenzen ( von Zeile bis Zeile )?
Dieses Tabellenblatt gibt es dann 12x von Januar bis Dezember. Wie kann mann das Makro verändern dss es gleich alle 12 Tabellenblätter ändert?
Kann man das Makro über eine Eingabemaske starten, wo mann das Jahr angibt
Danke im voraus
Markus
Anzeige
AW: Monatskalender Wochenende markieren
17.11.2005 11:49:00
Fritz
Hallo Markus,
vorausgesetzt die Daten stehen immer in den gleichen Zellen dann so:
https://www.herber.de/bbs/user/28466.zip
Gruß
Fritz
AW: Monatskalender Wochenende markieren
17.11.2005 16:10:09
markus
Hallo Fritz,
das Makro funktioniert super, jedoch habe ich bei der letzten Beschreibung etwas vergessen.
Es gibt in der Excelliste mehrere Mitarbeitergruppen die immer in 12 Tabellenblätter untergliedert sind.
Das bedeutet konkret in meinem Fall:
4 Mitarbeitergruppen a´12 Tabellenblätter ( Januar bis Dezember )
Wie kann ich das Makro einschränken, dass es z.B. die Tabellenblätter 1-12 ändert oder 13-24.
Ich kann dir die Datei leider nicht zur Verfügung stellen da sie 2MB groß ist und vertrauliche Daten beinhaltet.
Bitte um Rückinfo
nochmal eine Frage
Anzeige
AW: Monatskalender Wochenende markieren
18.11.2005 13:04:27
Fritz
Dann die Schleife nicht bis worksheets.count laufen lassen sollen manuell setzen
z.B.
for X=1 to 12
for x=13 to 24
etc
Dann noch einen separaten Zähler für die Monate.
Gruß
Fritz

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige