Allgemein
ohne VBA Beispiele letzte Bearbeitung 28.07.19 |
' **************************************************************
' Modul: mdl_Arbeiszeit_Pause Typ = Allgemeines Modul
' **************************************************************
Option Explicit ' VariablEndefinition erforderlich
Function Arbeitszeit(Beginn As Variant, Ende As Variant) As Date
'***********************************************
'* H. Ziplies *
'* 23.12.14 *
'* erstellt von HajoZiplies@web.de *
'* http://Hajo-Excel.de/ *
'***********************************************
Application.Volatile
Dim DoWert As Double
' nach Hinweis von Xico zusätzlicher Vergleich falls eine Eingabe leer
If Beginn <> 0 And Ende <> 0 And IsNumeric(Beginn) And IsNumeric(Ende) Then
' ******
With Application.WorksheetFunction
' Mod kann nicht den Rest bei Kommazahlen ermitteln, darum so aufwendig
If Ende - Beginn < 0 Then
DoWert = Ende - Beginn + 1
Else
DoWert = Ende - Beginn
End If
Select Case DoWert
Case Is < 6 / 24
' Arbeitszeit < 6 Stunden
Arbeitszeit = DoWert
Case Is < 9 / 24
' Arbeitszeit < 9 Stunden
Arbeitszeit = DoWert - Application.WorksheetFunction.Min(CDate("0:30"), DoWert - 6 / 24)
Case Else
' Arbeitszeit >= 9 Stunden
Arbeitszeit = DoWert - Application.WorksheetFunction.Min(CDate("1:00"), DoWert - 9 / 24)
End Select
End With
Else
Arbeitszeit = 0 ' Text Eingabe
End If
End Function
Code eingefügt mit: Excel Code Jeanie, angepasst an XHTML |