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.450 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. |
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. Tipp des Monats Januar 2025 Dieter Otter Zeilen einer MultiLine-TextBox ermitteln (VB.NET) Dieser Zipp zeigt, wie man die Zeilen einer MultiLine-TextBox exakt so ermitteln kann, wie diese auch in der TextBox dargestellt werden. sevZIP40 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. |
||||||||||||||||
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. |