Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

in tabelle formelberechnung für feiertage...

628 views
Skip to first unread message

michlchen

unread,
Mar 29, 2013, 5:10:53 AM3/29/13
to
hallo ng.

ich habe eine tabelle feiertage.

FTag FTag_Name Jahr
01.01.2012 Neujahr 2012
06.04.2012 Karfreitag 2012
...


jetzt gibt es eine tabelle feiertage_berechnungsformel.
(logik ist aus nem excelfile, also in A1 das jahr und automatische
berechnung)

FTag_Name Jahr Tag_fürs_Jahr
Logig
Neujahr 2012 01.01.2012
=DATUM(jahr;1;1)
Karfreitag 2012 06.04.2012
=DM((TAG(MINUTE(jahr/38)/2+55)&".4."&jahr)/7;)*7-6
...

wenn in der tabelle feiertage kein einziger wert für ein bestimmtes
jahr ist (jahr über ne auswahlbox bestimmt) möchte ich jetzt
eigentlich nur in der spalte jahr per vba das jahr eintragen und dann
über die logik das datum ersetzen um bei tag_fürs_jahr das richtige
drin zu haben.

dann die entsprechenden spalten nehmen und an feiertage anfügen.
geht das? oder viel zu kompliziert gedacht und es gibt ne funktion
feiertage?

danke für die infos.
und frohe ostern.

Ekkehard Böhme

unread,
Mar 29, 2013, 10:55:59 AM3/29/13
to
Hallo Michel,

<schnipp>

> und es gibt ne funktion feiertage?

Ja gibt es:

'Feiertagsberechnung :
'Quelle:
'http://www.access-o-mania.de/forum/index.php?topic=15480.msg89143;topicseen#msg89143
Option Compare Database
Option Explicit
'// ----------------------------------------------------------------
'// Feiertagsberechnung nach dem Algorithmus von Carl
Friedrich Gau�
'// ----------------------------------------------------------------
Type DtFeiertage
Jahreszahl As Long
Ostern As Date
Neujahr As Date
Karfreitag As Date
Ostersonntag As Date
Ostermontag As Date
Maifeiertag As Date
ChrHimmelfahrt As Date
Pfingstsonntag As Date
Pfingstmontag As Date
Fronleichnam As Date
DtEinheit As Date
Allerheiligen As Date
Heiligabend As Date
Weihnachten1 As Date
Weihnachten2 As Date
Sylvester As Date
End Type

Dim m_uDTF As DtFeiertage


Public Function Feiertag(mdatum As Date) As Boolean

Dim Jahreszahl As Integer
Dim mbol As Boolean

Jahreszahl = DatePart("yyyy", mdatum)

mbol = False

'// Als Refrenzdatum zun�chst m_uDTF.Ostern berechnen
If Not Ostern_berechnen(Jahreszahl) Then Exit
Function

'// Neujahr setzen (fester Feiertag am 1. Januar)
m_uDTF.Neujahr = DateSerial(Jahreszahl, 1, 1)
If mdatum = m_uDTF.Neujahr Then mbol = True

'// Karfreitag berechnen (beweglicher Feiertag; 2 Tage
vor Ostern)
m_uDTF.Karfreitag = m_uDTF.Ostern - 2
If mdatum = m_uDTF.Karfreitag Then mbol = True

'// Ostersonntag = m_uDTF.Ostern!
m_uDTF.Ostersonntag = m_uDTF.Ostern
If mdatum = m_uDTF.Ostersonntag Then mbol = True

'// Ostermontag berechnen (beweglicher Feiertag; 1 Tag
nach Ostern)
m_uDTF.Ostermontag = m_uDTF.Ostern + 1
If mdatum = m_uDTF.Ostermontag Then mbol = True

'// Maifeiertag setzen (fester Feiertag am 1. Mai)
m_uDTF.Maifeiertag = DateSerial(Jahreszahl, 5, 1)
If mdatum = m_uDTF.Maifeiertag Then mbol = True

'// Christi Himmelfahrt berechnen (beweglicher
Feiertag; 39 Tage nach Ostern)
m_uDTF.ChrHimmelfahrt = m_uDTF.Ostern + 39
If mdatum = m_uDTF.ChrHimmelfahrt Then mbol = True

'// Pfingstsonntag berechnen (beweglicher Feiertag; 49
Tage nach Ostern)
m_uDTF.Pfingstsonntag = m_uDTF.Ostern + 49
If mdatum = m_uDTF.Pfingstsonntag Then mbol = True

'// Pfingstmontag berechnen (beweglicher Feiertag; 50
Tage nach Ostern)
m_uDTF.Pfingstmontag = m_uDTF.Ostern + 50
If mdatum = m_uDTF.Pfingstmontag Then mbol = True

'// Fronleichnam berechnen (beweglicher Feiertag; 60
Tage nach Ostern)
m_uDTF.Fronleichnam = m_uDTF.Ostern + 60
If mdatum = m_uDTF.Fronleichnam Then mbol = True

'// Tag der deutschen Einheit setzen (fester Feiertag
am 3. Oktober)
m_uDTF.DtEinheit = DateSerial(Jahreszahl, 10, 3)
If mdatum = m_uDTF.DtEinheit Then mbol = True

'// Allerheiligen setzen (fester Feiertag am 1.
November)
m_uDTF.Allerheiligen = DateSerial(Jahreszahl, 11,
1)
If mdatum = m_uDTF.Allerheiligen Then mbol = True

'// Heiligabend setzen (fester 'Feiertag' am 24.
Dezember)
m_uDTF.Heiligabend = DateSerial(Jahreszahl, 12, 24)
If mdatum = m_uDTF.Heiligabend Then mbol = True

'// Erster Weihnachtstag setzen (fester 'Feiertag' am
25. Dezember)
m_uDTF.Weihnachten1 = DateSerial(Jahreszahl, 12,
25)
If mdatum = m_uDTF.Weihnachten1 Then mbol = True

'// Zweiter Weihnachtstag setzen (fester 'Feiertag' am
26. Dezember)
m_uDTF.Weihnachten2 = DateSerial(Jahreszahl, 12,
26)
If mdatum = m_uDTF.Weihnachten2 Then mbol = True

'// Sylvester setzen (fester 'Feiertag' am 31.
Dezember)
m_uDTF.Sylvester = DateSerial(Jahreszahl, 12, 31)
If mdatum = m_uDTF.Sylvester Then mbol = True

Feiertag = mbol

End Function

Function Ostern_berechnen(ByVal lYear As Long) As
Boolean

'// Berechnung mit Hilfe des Algorithmus von Gau�
On Error GoTo Err_Ostern_berechnen

Dim i1 As Integer
Dim i2 As Integer
Dim i3 As Integer
Dim i4 As Integer
Dim i5 As Integer
Dim iTZ As Integer '//
iTZ = Tageszahl

i1 = lYear Mod 19 '//
Formel nach Gau�
i2 = lYear Mod 4 '//
Werte f�r die Jahre
i3 = lYear Mod 7 '//
1900 - 2099

i4 = (19 * i1 + 24) Mod 30
i5 = (2 * i2 + 4 * i3 + 6 * i4 + 5) Mod 7
iTZ = 22 + i4 + i5 '//
Ermittelt den Tag
If iTZ > 31 Then '//
M�rz oder April
iTZ = iTZ - 31 '//
Wenn April, dann - 31 Tage
If iTZ = 26 Then iTZ = 19 '//
Wenn 26.4. dann 19.4.
If (iTZ = 25 And i4 = 28 And i1 > 10) Then iTZ
= 18
m_uDTF.Ostern = DateSerial(lYear, 4, iTZ) '//
Ostern im April
Else
m_uDTF.Ostern = DateSerial(lYear, 3, iTZ) '//
Ostern im Maerz
End If
Ostern_berechnen = True

Exit_Ostern_berechnen:
Exit Function

Err_Ostern_berechnen:
Ostern_berechnen = False
GoTo Exit_Ostern_berechnen

End Function

Habe ich allerdings selber noch nicht verwendet,
kann also nicht sagen, ob's ohne Probleme funzt.

und frohe ostern.

hth und ebenfalls
ekkehard b�hme

Stefan Wirrer

unread,
Apr 2, 2013, 3:38:57 AM4/2/13
to
Hallo,

michlchen schreibselte:
> hallo ng.
>
> ich habe eine tabelle feiertage.
>
> FTag FTag_Name Jahr
> 01.01.2012 Neujahr 2012
> 06.04.2012 Karfreitag 2012
> ...
>
>
> jetzt gibt es eine tabelle feiertage_berechnungsformel.
> (logik ist aus nem excelfile, also in A1 das jahr und automatische
> berechnung)
>
> FTag_Name Jahr Tag_f�rs_Jahr
> Logig
> Neujahr 2012 01.01.2012
> =DATUM(jahr;1;1)
> Karfreitag 2012 06.04.2012
> =DM((TAG(MINUTE(jahr/38)/2+55)&".4."&jahr)/7;)*7-6
> ...
>
> wenn in der tabelle feiertage kein einziger wert f�r ein bestimmtes
> jahr ist (jahr �ber ne auswahlbox bestimmt) m�chte ich jetzt
> eigentlich nur in der spalte jahr per vba das jahr eintragen und dann
> �ber die logik das datum ersetzen um bei tag_f�rs_jahr das richtige
> drin zu haben.
>
> dann die entsprechenden spalten nehmen und an feiertage anf�gen.
> geht das? oder viel zu kompliziert gedacht und es gibt ne funktion
> feiertage?
wenn du dich ernsthaft mit Feiertagen besch�ftigen musst, dann musst du
auch beachten, dass in D ein paar Feiertage abh�ngig vom Bundesland,
von der Region innerhalb des Bundeslandes oder auch von einer Stadt sind.

Ich hab da mal eine DB dazu erstellt.
Die findest du unter http://www.donkarl.com?FAQ2.19


--
Gru�
aus M�nchen

Stefan

Stefan...@volke-muc.de
---------------------------------------------------------------------
Access-FAQ: http://www.donkarl.com/AccessFAQ.htm
KnowHow-MDB: http://www.freeaccess.de/
Infos f�r Neulinge in den Access-Newsgroups:
http://www.doerbandt.de/access/Newbie.htm
Stammtisch: http://www.access-muenchen.de/


michlchen

unread,
Apr 2, 2013, 9:09:01 AM4/2/13
to
mir würden schon die feiertage für bayern (münchen) je nach jahr
reichen *g*
die festen tage würden ja auch recht einfach gehen, aber ostern eben
nicht.

deswegen war ja auch die tabelle mit den berechnungsvorschriften
angedacht.
aber ich schau mal rein.

mercy.

>
> wenn du dich ernsthaft mit Feiertagen beschäftigen musst, dann musst du
> auch beachten, dass in D ein paar Feiertage abhängig vom Bundesland,
> von der Region innerhalb des Bundeslandes oder auch von einer Stadt sind.
>
> Ich hab da mal eine DB dazu erstellt.
> Die findest du unterhttp://www.donkarl.com?FAQ2.19
>
> --
> Gruß
> aus München
>
> Stefan
>
> Stefan.Wir...@volke-muc.de
> ---------------------------------------------------------------------
> Access-FAQ:http://www.donkarl.com/AccessFAQ.htm
> KnowHow-MDB:http://www.freeaccess.de/
> Infos für Neulinge in den Access-Newsgroups:http://www.doerbandt.de/access/Newbie.htm
> Stammtisch:http://www.access-muenchen.de/- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

michlchen

unread,
May 20, 2013, 4:20:48 PM5/20/13
to
habs jetzt so, dass ich mir die relevanten tage in die tabelle
schreibe.
brauch ja nur ostern berechnen und rest ist fix.

alles andere wären die bekannten kanonen... :-)
0 new messages