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 20.120 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (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. |
Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |