Fristen berechnen leicht gemacht

Autor: André Minhorst, Duisburg

Das Berechnen des Datums, an dem eine bestimmte Frist abgelaufen ist, sollte normalerweise keine besondere Schwierigkeit sein. Man nimmt das Anfangsdatum, addiert die gewünschte Anzahl Tage auf das Startdatum auf und – Pech gehabt! Leider auf einem Samstag oder Sonntag gelandet. Und für die fristgerechte überweisung von Rechnungen an einem Samstag oder Sonntag kann man selbst im Zeitalter des Online-Banking nicht jeden begeistern. Also flugs das Datum auf den nächsten Montag geändert und fertig – aber muss das denn alles von Hand passieren Nein. Mit den im Folgenden vorgestellten Methoden legen Sie jedes Ende einer Frist auf einen Wochentag. Und am Beispiel einer Bücherei erfahren Sie, wie die Methoden anzuwenden sind.

Die Einhaltung von Fristen ist für beide Seiten wichtig – sowohl für denjenigen, der eine Forderung hat und dementsprechend eine Frist bis zur Erfüllung der Forderung setzt, als auch für denjenigen, der die Forderung in der gesetzten Frist erfüllen soll.

Manchmal will der Geforderte gar nicht unbedingt die Frist ausreizen und muss es auch nicht – beispielsweise, wenn es um die Rückgabe eines Buches geht. Hat man es ausgelesen, gibt man es gerne auch vor Ablauf der Ausleihfrist zurück, sodass andere eventuell früher als erwartet in den gleichen Lesegenuss kommen. Anders ist es in finanziellen Dingen: Hier gilt das Zitat “Zeit ist Geld”. Denn schließlich bringt das Geld umso mehr Zinsen, je länger es irgendwie angelegt ist.

Und daher reizt man in solchen Fällen schon einmal die Frist aus.

In allen Fällen aber gilt: Das Ende der Frist sollte nicht auf einen Sonn- oder Feiertag fallen und, abhängig von den öffnungszeiten der fristsetzenden Institution, möglicherweise auch nicht auf einen Samstag.

Voraussetzung für die folgenden Beispiele ist die Kenntnis des Datums, an dem die Frist beginnt, sowie die Dauer bis zum Ablauf der Frist in Tagen.

Fristende berechnen ohne Rücksicht

Verwendet man VBA, lässt sich das Datum des Endes der Frist ohne die Berücksichtigung von Samstag, Sonn- und Feiertagen leicht ermitteln, indem man die folgende Funktion verwendet:

Function Fristende(Fristanfang As Date, _    Fristdauer As Long) As Date
    Fristende = Fristanfang + Fristdauer
End Function

Hinweis

Geben Sie die Funktion in ein neues Modul ein. Aktivieren Sie dazu im Datenbankfenster das Register Module und klicken Sie auf die Schaltfläche Neu. Nun können Sie im VBA-Fenster die gewünschte Funktion eingeben.

Als übergabeparameter der Funktion dienen das Datum des Fristbeginns sowie die Länge der Frist in Tagen. Verwenden Sie einmal den folgenden Funktionsaufruf:

Debug.Print Fristende("1.1.2001",30)

Hinweis

Funktionsaufrufe, die nicht innerhalb einer Anwendung erfolgen, können Sie am besten im Testfenster ausprobieren. Betätigen Sie die Tastenkombination Strg + G, um das Testfenster zu aktivieren.

Im Testfenster sollten Sie nun den folgenden Ausdruck erhalten:

31.01.2001

Fristende ohne Wochenende

Wenn Sie bei der Berechnung des Fristendes die beiden Tage des Wochenendes, den Samstag und den Sonntag, außen vor lassen möchten, haben Sie zwei Möglichkeiten:

Entweder Sie verkürzen die Frist auf den letzten Tag vor dem Wochenende oder Sie verlängern Sie auf den nächsten Tag nach dem Wochenende. Im Folgenden lernen Sie beide Möglichkeiten kennen.

Eine Möglichkeit der überprüfung, ob es sich nun um einen Wochentag oder um einen Samstag oder Sonntag handelt, ergibt sich aus folgender Tatsache: Wenn man das Datum eines Tages kennt, kann man mit einer entsprechenden Funktion ermitteln, um welchen Wochentag es sich handelt.

Dabei handelt es sich um die so genannte Weekday-Funktion. Probieren Sie die Funktion einmal im Testfenster aus, z. B. mit dem folgenden Aufruf:

Debug.Print Weekday("17.5.2001")

Im Testfenster erscheint daraufhin eine Zahl – die Fünf. Dabei handelt es sich eine VBA-Konstante, die Sie entsprechend Tab. 1 den Wochentagen zuordnen können.

Wochentag

Konstante

Sonntag

1

Montag

2

Dienstag

3

Mittwoch

4

Donnerstag

5

Freitag

6

Samstag

7

Tab. 1: Wochentage und ihre Konstanten

Wenn Sie nun das Fristende nach hinten verschieben wollen, falls es auf ein Wochenende fällt, passen Sie die Funktion entsprechend an:

Function Fristende(Fristanfang As Date, Fristdauer As Long) As Date
    Fristende = Fristanfang + Fristdauer
    Do While Weekday(Fristende) = 7 _        Or Weekday(Fristende) = 1
        Fristende = Fristende + 1
    Loop
End Function

Die Funktion überprüft nun, ob der Wochentag des letzten Tages der Frist ein Samstag oder Sonntag ist. Falls ja, verschiebt sie das Ende der Frist um einen Tag nach hinten.

Problem der Feiertage

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar