FlowFact - Entwicklungstools

zurück

Function - MoveDate
Datum verschieben

Diese Funktion verschiebt den Datumswert varDate. Der neue Wert ergibt sich zu datStartDate + (varDate - datRefDate)
  Function MoveDate(ByVal varDate As Variant, ByVal datStartDate As Date, ByVal datRefDate As Date, Optional blnWochenende As Boolean = True, Optional blnFeiertag As Boolean = True) As Variant  
 


varDate: Der zu verscheibene Datumswert
datStartDate: Startdatum
datRefDate: Referenzdatum
blnWochenende: True: Datumswert überspringt Wochenende bzw. Wochenenden werden nicht mitgezählt
blnFeiertag: True: Datumswert überspringt Feiertag; bzw. Feiertage werden nicht mitgezählt
Rückgabe: neu berechneter Datumswert


Public Function MoveDate(ByVal varDate As Variant, ByVal datStartDate As Date, ByVal datRefDate As Date, Optional blnWochenende As Boolean = True, Optional blnFeiertag As Boolean = True) As Variant
    Dim d As Long
    Dim n As Date

    If VarType(varDate) <> vbDate Then
        MoveDate = varDate
        Exit Function
    End If

    d = Int(varDate) - Int(datRefDate)

    If varDate = Int(varDate) Then '-- ohne Uhrzeit
        n = Int(datStartDate)
    Else
        n = datStartDate
    End If

    While IsArbeitstag(n, blnFeiertag, blnWochenende, blnWochenende) = False
        n = n + 1
    Wend


    While d > 0
        n = n + 1
        If IsArbeitstag(n, blnFeiertag, blnWochenende, blnWochenende) Then
            d = d - 1
        End If
    Wend

    MoveDate = n
End Function