Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1564to1568
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
Inhaltsverzeichnis

feiertage berechnen

feiertage berechnen
23.06.2017 09:21:16
Matthias
Hallo Ihr Profis,
ich brauche Hilfe zum ermitteln der Feiertage. Leider habe ich wenig Erfahrung mit VBA und bekomme die Funktionen nicht angepasst.
Ich möchte mir die Feiertage der nächsten drei Jahre ausgeben lassen. Dafür habe ich mir Folgenden Code aus dem Netz gesucht:
Private Sub CommandButtonFeiertag_Click()
Dim dummy As Variant
dummy = Feiertage(2017)
Sheets("Tabelle2").Range("H2:I" & UBound(dummy, 1) + 1) = dummy
End Sub
Public Function Feiertage(intYear As Integer) As Variant
Dim varDates(13, 1) As Variant
Dim dEaster As Date
dEaster = Easter(intYear)
varDates(0, 0) = DateSerial(intYear, 1, 1)
varDates(0, 1) = "Neujahr"
varDates(1, 0) = DateSerial(intYear, 1, 6)
varDates(1, 1) = "Dreikönig"
varDates(2, 0) = dEaster - 3
varDates(2, 1) = "Karfreitag"
varDates(3, 0) = dEaster + 1
varDates(3, 1) = "Ostermontag"
varDates(4, 0) = DateSerial(intYear, 5, 1)
varDates(4, 1) = "Tag der Arbeit"
varDates(5, 0) = dEaster + 39
varDates(5, 1) = "Christi Himmelfahrt"
varDates(6, 0) = dEaster + 50
varDates(6, 1) = "Pfingstmontag"
varDates(7, 0) = dEaster + 60
varDates(7, 1) = "Fronleichnam"
varDates(8, 0) = DateSerial(intYear, 10, 3)
varDates(8, 1) = "Tag der Einheit"
varDates(9, 0) = DateSerial(intYear, 11, 1)
varDates(9, 1) = "Allerheiligen"
varDates(10, 0) = DateSerial(intYear, 12, 24)
varDates(10, 1) = "Heiligabend"
varDates(11, 0) = DateSerial(intYear, 12, 25)
varDates(11, 1) = "1. Weihnachtstag"
varDates(12, 0) = DateSerial(intYear, 12, 26)
varDates(12, 1) = "2. Weihnachtstag"
varDates(13, 0) = DateSerial(intYear, 12, 31)
varDates(13, 1) = "Silvester"
Feiertage = varDates
End Function
Private Function Easter(Year As Integer) As Date
Dim D As Integer
D = (((255 - 11 * (Year Mod 19)) - 21) Mod 30) + 21
Easter = DateSerial(Year, 3, 1) + D + (D > 48) + 6 - _
((Year + Year \ 4 + D + (D > 48) + 1) Mod 7)
End Function

Der Code funktioniert für das Jahr 2017
Vielen Dank im Vorhinein
Gruß Matthias

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: feiertage berechnen
23.06.2017 09:25:28
Hajo_Zi
Hallo Matias,
was spricht gegen
Feiertage(2018)
Feiertage(2019)
Du mußt es nartürlich wo anders hin schreiben.

AW: feiertage berechnen
23.06.2017 09:44:19
Matthias
Hallo Hajo,
ich habe folgendes probiert... funktioniert aber nicht:
Private Sub CommandButtonFeiertag_Click()
Dim dummy As Variant
dummy = Feiertage(2017)
Sheets("Tabelle2").Range("H2:I" & UBound(dummy, 1) + 1) = dummy
dummy = Feiertage(2018)
Sheets("Tabelle2").Range("H15:I" & UBound(dummy, 1) + 1) = dummy
dummy = Feiertage(2019)
Sheets("Tabelle2").Range("H28:I" & UBound(dummy, 1) + 1) = dummy
End Sub

Anzeige
AW: feiertage berechnen
23.06.2017 09:55:04
Chris
Die Idee war gut, aber Dein Anfang wandert nach unten, das Ende aber nicht...
UBound(dummy, 1) + 1 = 14 = H15:I14 = :-(
AW: feiertage berechnen
23.06.2017 10:28:45
Matthias
Meine Kenntnisse sind begrenzt... Ich verstehe oft nicht den ganzen Code
AW: feiertage berechnen
23.06.2017 11:58:14
Chris
deshalb wollte ich dir erklären, warum es nicht ging.
AW: feiertage berechnen
23.06.2017 10:19:30
Hajo_Zi
ich hätte den Code anders geschrieben.
Option Explicit
Dim varDates()
Private Sub CommandButtonFeiertag_Click()
Feiertage (2017)
Sheets("Tabelle2").Range("H2:I" & UBound(varDates, 1) + 2) = varDates
Feiertage (2018)
Sheets("Tabelle2").Range("H16:I" & UBound(varDates, 1) + 16) = varDates
Feiertage (2019)
Sheets("Tabelle2").Range("H30:I" & UBound(varDates, 1) + 30) = varDates
End Sub
Public Function Feiertage(intYear As Integer) As Variant
ReDim varDates(0 To 13, 0 To 1) As Variant
Dim dEaster As Date
dEaster = Easter(intYear)
varDates(0, 0) = DateSerial(intYear, 1, 1)
varDates(0, 1) = "Neujahr"
varDates(1, 0) = DateSerial(intYear, 1, 6)
varDates(1, 1) = "Dreikönig"
varDates(2, 0) = dEaster - 3
varDates(2, 1) = "Karfreitag"
varDates(3, 0) = dEaster + 1
varDates(3, 1) = "Ostermontag"
varDates(4, 0) = DateSerial(intYear, 5, 1)
varDates(4, 1) = "Tag der Arbeit"
varDates(5, 0) = dEaster + 39
varDates(5, 1) = "Christi Himmelfahrt"
varDates(6, 0) = dEaster + 50
varDates(6, 1) = "Pfingstmontag"
varDates(7, 0) = dEaster + 60
varDates(7, 1) = "Fronleichnam"
varDates(8, 0) = DateSerial(intYear, 10, 3)
varDates(8, 1) = "Tag der Einheit"
varDates(9, 0) = DateSerial(intYear, 11, 1)
varDates(9, 1) = "Allerheiligen"
varDates(10, 0) = DateSerial(intYear, 12, 24)
varDates(10, 1) = "Heiligabend"
varDates(11, 0) = DateSerial(intYear, 12, 25)
varDates(11, 1) = "1. Weihnachtstag"
varDates(12, 0) = DateSerial(intYear, 12, 26)
varDates(12, 1) = "2. Weihnachtstag"
varDates(13, 0) = DateSerial(intYear, 12, 31)
varDates(13, 1) = "Silvester"
Feiertage = varDates
End Function
Private Function Easter(Year As Integer) As Date
Dim D As Integer
D = (((255 - 11 * (Year Mod 19)) - 21) Mod 30) + 21
Easter = DateSerial(Year, 3, 1) + D + (D > 48) + 6 - _
((Year + Year \ 4 + D + (D > 48) + 1) Mod 7)
End Function

Gruß Hajo
Anzeige
AW: feiertage berechnen
23.06.2017 12:48:45
Rudi
Hallo,
so sollte das gehen:
Private Sub CommandButtonFeiertag_Click()
Dim dummy As Variant
dummy = Feiertage(2017)
Sheets("Tabelle2").Range("H2").Resize(UBound(dummy) + 1, 2) = dummy
dummy = Feiertage(2018)
Sheets("Tabelle2").Range("H15").Resize(UBound(dummy) + 1, 2) = dummy
dummy = Feiertage(2019)
Sheets("Tabelle2").Range("H28").Resize(UBound(dummy) + 1, 2) = dummy
End Sub
Gruß
Rudi
AW: feiertage berechnen
23.06.2017 14:45:16
Chris
wenn man an Silvester 2017 und 2018 arbeitet ist das OK...
AW: feiertage berechnen
23.06.2017 09:31:45
Chris
Das man Ostern berechnen kann war mir auch neu.
Für die nachsten 3 Jahre ersetzte
Private Sub CommandButtonFeiertag_Click()
Dim dummy As Variant
dummy = Feiertage(2017)
Sheets("Tabelle2").Range("H2:I" & UBound(dummy, 1) + 1) = dummy
End Sub
durch
Private Sub CommandButtonFeiertag_Click()
Dim dummy As Variant
Dim i As Integer
For i = 0 To 2
dummy = Feiertage(2017 + i)
Sheets("Tabelle1").Range("H" & 2 + i * 13 & ":I" & UBound(dummy, 1) + 1 + 13 * i) = dummy
Next
End Sub

Anzeige
AW: feiertage berechnen
23.06.2017 09:41:20
Chris
silvester fehlt übrigends schon im Originalcode...
Hast du A1 zu H2 geändert?
für H2 muss die Zeile dann so aussehen:
Sheets("Tabelle1").Range("H" & 2 + i * 14 & ":I" & UBound(dummy, 1) + 2 + 14 * i) = dummy
AW: feiertage berechnen
23.06.2017 09:54:38
Matthias
Super gut!!!
danke für die Hilfe
... und ja habe ich geändert

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige