ich habe ein Makro von Thomas Ramel gefunden, das Arbeitstage auch im Makro mit Feiertagen berechnet.
Leider funktioniert dies nur wenn ich einen Arbeitstag x habe und y Tage hinzuzähle.
Ich habe jetzt vielfach versucht das Makro umzubauen, so dass es auch funktioniert, wenn y negativ ist. (Negative Schleife etc.) Leider bin ich immer wieder gescheitert. Habt Ihr eine Idee?
Hier der Originalcode: und der Link auf meine Musterdatei mit dem Makro. https://www.herber.de/bbs/user/47743.xls
Danke für etwaige Tipps,
Pascal
Public Function ARBEITSTAGE(Ausgangsdatum As Date, _
Tage As Integer, _
Optional Feiertage As Range, _
Optional Wochentage As Byte = 5) As Date
'© t.ramel@mvps.org, 22.07.2005
'ermittelt das Ende der Zeitspanne mit Arbeitstagen analog
'der Funktion ARBEITSTAG(), jedoch mit variabler Wochenlänge
'Parameter sind die folgenden:
'Ausgangsdatum: Eine Datumsangabe oder ein Zellbezug
'Tage : Anzahl Arbeitstabe bis zum Ende des Zeitraums
'Feiertage : Ein Bezug auf einen Range oder einen benannten
' Bereich mit den Datusm-Angaben zu den Feiertagen
'Wochentag : Eine Zahl von 1-7, welche die Anzahl Arbeitstage
' pro Woche angibt (beginnend mit Montag)
Dim Enddatum As Date
Dim Datum As Date
Dim Tag As Range
Dim i As Integer
If Wochentage 7 Then
ARBEITSTAGE = CVErr(xlErrValue)
Exit Function
End If
'Enddatum bestimmen für den Schleifendurchlauf
Enddatum = Ausgangsdatum + Tage
'äussere Schleife zur Prüfung der Wochentage
For Datum = Ausgangsdatum + 1 To Enddatum
If WorksheetFunction.Weekday(Datum, 2) > Wochentage Then
'Zählvariable erhöhen wenn Wochentag grösser als gewünscht
i = i + 1
'innere Schleife zur Prüfung der Feiertage
ElseIf Not Feiertage Is Nothing Then
'Versionsabfrage, da .Find in xl2000 nicht funktioniert
If Val(Application.Version) 0 Then 'Wenn Zählvariable erhöht wurde
'rekursiver Aufruf der Funkton für die Untersuchung des verlängerten Zeitraumes
Enddatum = ARBEITSTAGE(Enddatum, i, Feiertage, Wochentage)
End If
ARBEITSTAGE = Enddatum
End Function