Kalendertag oder Arbeitstag

Nicht immer zählen

Der eigentliche Trick der Funktion besteht in der Tatsache, dass die darin benutzte Weekday-Funk- tion zu jedem Werktag eine Zahl zurückgibt.

Der Prüfzähler intZaehler wird nur dann erhöht, wenn es sich um die Tageszahlen 1-5, also Montag bis Freitag handelt. Der Do-Loop-Zähler intAnzTage wird hingegen immer weiter um 1 erhöht, bis intZaehler die gewünschte intDauer erreicht hat. Die Variable intAnzTage wird also so lange hochgezählt, bis sich ausreichend Tage in intZaehler gesammelt haben.

Feiertage berücksichtigen

Da diese Technik sehr einfach ist und zeitlich unbegrenzt funktioniert, ließe sie sich auch noch verbessern.

Die Funktion lässt sich erweitern, indem man für das jeweilige Endedatum (aus datStart + intAnzTage) per DLookup prüft, ob es in einer Tabelle als Feiertag oder Urlaubstag hinterlegt wurde. Und wenn intZaehler dann nicht erhöht wird, berücksichtigt die Funktion sogar nur noch echte Arbeitstage.