Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2001.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

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.

Probleme mit dem Fristende

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.

Fristende berechnen mit VBA

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

Anders als bei den Wochenenden liegt die Problematik der Feiertage. Während ein Samstag oder Sonntag leicht über die Weekday-Funktion zu identifizieren ist, fällt das bei Feiertagen nicht so leicht.

Um zu überprüfen, ob der letzte Tag der Frist auf einen Feiertag fällt, benötigt man eine Auflistung der Feiertage, am besten in Tabellenform.

Function IstFeiertag(Datum As Date) As Boolean

    IstFeiertag = True

    If IsNull(DLookup("Feiertag", "Feiertage", "[Datum] like '" & Datum & "'")) Then

        IstFeiertag = False

    End If

Function Fristende(Fristanfang As Date, Fristdauer As Long) As Date

    Fristende = Fristanfang + Fristdauer

    Do While Weekday(Fristende) = 7 Or Weekday(Fristende) = 1 Or _
        IstFeiertag(Fristende) = True

        Fristende = Fristende + 1

    Loop

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Flexible Datumstextfelder

© 2003-2015 André Minhorst Alle Rechte vorbehalten.