This is a bit brute force
PaulSub test() MsgBox WorkingHours(#6/1/2011#) End Sub Function WorkingHours(MonthYear As Date) As Double Dim i As Long Dim N As Double N = 0# For i = DateSerial(Year(MonthYear), Month(MonthYear), 1) To DateSerial(Year(MonthYear), Month(MonthYear) + 1, 0) Select Case Weekday(i) Case vbMonday, vbTuesday, vbThursday N = N + 8 Case vbWednesday N = N + 4 Case vbFriday N = N + 5 End Select Next i WorkingHours = N End Function