AW: 179202 - Nettoarbeitstage sprachunabhängig
Ramses
Hallo
probier mal das aus:
Function myPrivateNetworkDays(myStart As Range, myEnd As Range, Optional freedays As Range) As Long
'by Ramses
'Aufruf erfolgt in Tabelle
'=myPrivateNetworkDays(A1;A2;B1:B10)
'A1 = StartDatum
'A2 = EndDatum
'B1:B10 = Bereich in dem die freien Tage als Datum definiert sind
On Error GoTo myErrorhandler
Dim i As Long, n As Long, DayChk As Boolean
Dim myNetDays As Long, myF As Variant
Dim myC As Range
myNetDays = 0
n = 0
DayChk = False
For i = myStart To myEnd
If Weekday(Format(myStart + n, "dd.mm.yyyy"), vbMonday) < 6 Then
'On Error Resume Next
For Each myC In freedays
If myC.Value = myStart + n Then
DayChk = True
Exit For
End If
Next
Weiter:
Err.Clear
If DayChk = False Then
myNetDays = myNetDays + 1
End If
DayChk = False
End If
n = n + 1
Next i
ErrExit:
myPrivateNetworkDays = myNetDays
Exit Function
myErrorhandler:
Select Case Err.Number
Case 424 'Kein Feiertagsbereich
Resume Weiter
Case Else
MsgBox Err.Number & ": " & Err.Description
Resume ErrExit
End Select
End Function
Diese Funktion benötigt die EXCEL eigene Funktion NETWORKDAYS nicht.
Sollte es damit funkionieren, kannst du sie verwenden, sollte es damit auch nicht funktionieren, vermute ich, dass ein Bereich den du übergibst, korrupt ist, d.h. keine gültigen Datumswerte im Bereich stehen.
Gruss Rainer