Die folgende Funktion berechnet unter Angabe eines Startdatums (dt) und einer Anzahl von Arbeitstagen einen Arbeitstag in der Zukunft (n>0) oder in der Vergangenheit (n<0). Bei Auswahl von 0 wird der nächste folgende Arbeitstag ermittelt, wenn das Startdatum (dt) ein Sonnabend oder Sonntag ist. Vorteil der Funktion: Es wird auf einen zeitaufwendigen Loop verzichtet, so dass sich auch große Zeitabstände schnell berechnen lassen. Public Function GetWorkDate(ByVal dt As Date, ByVal n As Long) As Date Dim Wd As Integer Dim Wk As Double Dim Wk2 As Long Dim Rd As Long ' dt = Startdatum ' n = Anzahl Arbeitstage ' Wd = Wochentag ' Wk = Anzahl Arbeitswochen ' Wk2 = Abgerundete Anzahl Geschäftswochen ' Rd = Resttage zum ermittelten Datum zu ergänzen ' Ermittle Wochentag vom Startdatum Wd = Weekday(dt, vbMonday) If Wd = 6 Then ' Ist Startdatum = Sa dann gehe zurück zu Freitag (n > 1) oder Montag (n < 1) If n < 1 Then dt = dt + 2 Else dt = dt - 1 ElseIf Wd = 7 Then ' Ist Startdatum = Sa dann gehe zurück zu Freitag (n > 1) oder Montag (n < 1) If n < 1 Then dt = dt + 1 Else dt = dt - 2 End If ' Ermittle Anzahl Arbeitswochen (mit Kommastelle) / Arbeitswoche hat 5 Tage Wk = Round(n / 5, 1) ' Ermittle Ganzzahl der Arbeitswochen Wk2 = Int(Wk) ' Errechne neues Datum berechnet mit Kalenderwochen auf Basis Arbeitswochen (7 Tage Woche) dt = dt + (Wk2 * 7) ' Ermittle aus Rest der verbleibenden Woche die Anzahl Tage (Nachkommastelle von Wk) Rd = (Wk - Wk2) * 5 ' Sollte das endgültige Datum auf einen Sa oder So fallen, rechne nochmal 2 Tage hinzu If (Weekday(dt, vbMonday) + Rd) > 5 Then Rd = Rd + 2 ' Errechne den endgültigen Arbeitstag durch Hinzurechnen der Resttage GetWorkDate = dt + Rd End Function Dieser Tipp wurde bereits 9.902 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevZIP30 Pro DLL ![]() Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Tipp des Monats Dietrich Herrmann Einsatz einer DimmingForm Es wird eine Form vorgestellt, mit deren Hilfe man den gesamten Bildschirm auf verschiedene Arten mit transparenter Farbe überdecken und nur eine eigene Form im Vordergrund zeigen kann. Neu! sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. |
||||||||||||||||
|
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |
|||||||||||||||||



Arbeitstage berechnen ohne Loop


