Hallo zusammen.
Ich habe eine Berechnung der Abwesenheitstage (Urlaub, Krankheit usw.) in meiner Personalverwaltung, die leider nicht immer funktioniert.
Habe ich einen Datensatz 27.12.2010 - 05.01.2011 als Urlaub bei einem Mitarbeiter drin stehen, rechnet er mit der folgenden Funktion nur korrekt, wenn das aktuelle Tagesdatum sich in 2011 befindet. Führe ich die Funktion heute aus, rechnet er vom 27.12.2010 - 05.01.2012. Was stimmt an der Funktion nicht ? Hat das etwas mit der Variablen "aktTag" zu tun?
Public Function AnzArbTageMA(VMDatumvon As Date, VMDatumbis As Date, strMAID As String) As Long
Dim aktTag As Date
For aktTag = VMDatumvon To VMDatumbis
If IstArbeitstag(aktTag, strMAID) Then
AnzArbTageMA = AnzArbTageMA + 1
End If
Next
End Function
Ich hoffe, mir kann da jemand helfen.
Gruß, Karsten
Hallo,
am einfachsten macht man das mit einer Hilfstabelle die alle Datumswerte eines Zeitraums erfasst. Feiertage sind in dieser Tabelle anzuhaken.
Dann lässt sich mit einer einfachen DCount Funktion die Anzahl der Arbeitstage zwischen 2 beliebigen Datumswerten ermitteln.
Beispieldb anbei. Im Beispiel gibt es ein Formular Erläuterungen, bitte lesen.
[Anhang gelöscht durch Administrator]
@MzKlMu
Danke für die Antwort.
Leider ist es nicht ganz so einfach gewesen, da verschiedene Mitarbeiter an manchen Wochentagen gar nicht arbeiten. Somit zählen manche Abwesenheitstage nicht. Es wurden deshalb pro Mitarbeiter die Felder SollstdMo, SollstdDi, SollstdMi usw. definiert. Eine Funktion für die Berechnung der Feiertage steht auch noch dahinter. Die Berechnung funktioniert ja auch normalerweise. Allerdings bekomme ich jedes Jahr im Januar das Problem, dass wenn ein jahresübergreifender Datensatz (wie in diesem Fall 27.12.2010 - 05.01.2011) vorhanden ist, die Berechnung fehlerhaft erfolgt (in diesem Fall vom 27.12.2010 - 05.01.2012 und nicht bis zum 05.01.2011).
Vielleicht hat jemand noch eine Idee.
Danke.
Gruß, Karsten
Hallo Leute.
Habs gelöst bekommen. Manchmal sieht man vor lauter Bäumen den Wald nicht. :)
Ein Abfragefeld für den Datumsaufbau war falsch definiert und "bastelte" immer ein falsches Enddatum zusammen.
Trotzdem Danke.
Gruß, Karsten