Public Function GetOpenHours(rptdate As Date, clrdate As Date)
Dim minsdiff As Integer
Dim day2minsdiff As Integer
Dim hoursopen, minsopen As String
Dim strDisplay As String
Dim diffDays As Long
Dim rptDayOfyear
Dim rptDayOfWeek
Dim rptDay
Dim rptMonth
Dim rptYear
Dim rptHour
Dim rptMin
Dim clrDayOfyear
Dim clrDayOfWeek
Dim clrDay
Dim clrMonth
Dim clrYear
Dim clrHour
Dim clrMin
'rptdate = CDate("16/02/04 10:20")
'clrdate = CDate("15/02/04 12:05")
If clrdate < rptdate Then
GetOpenHours = "##Date Error##"
Exit Function
End If
diffDays = DateDiff("d", rptdate, clrdate)
Select Case diffDays
Case 0:
clrHour = DatePart("h", clrdate)
clrMin = DatePart("n", clrdate)
If (clrHour = 17 And clrMin >= 30) Or clrHour > 17 Then
clrHour = 17
clrMin = 30
End If
rptHour = DatePart("h", rptdate)
If rptHour < 9 Then
rptHour = 9
rptMin = 0
Else
rptMin = DatePart("n", rptdate)
End If
minsdiff = ((clrHour * 60) + clrMin) - ((rptHour * 60) + rptMin)
If (DatePart("w", rptdate) = 1 Or DatePart("w", rptdate) = 7) Then minsdiff = 0
hoursopen = CStr(minsdiff \ 60) + " Hrs "
minsopen = CStr(minsdiff - ((minsdiff \ 60) * 60)) + " Mins"
If Len(minsopen) = 1 Then minsopen = "0" + minsopen
strDisplay = hoursopen + minsopen
GetOpenHours = strDisplay
Case 1:
rptHour = DatePart("h", rptdate)
If rptHour < 9 Then
rptHour = 9
rptMin = 0
Else
rptMin = DatePart("n", rptdate)
End If
minsdiff = ((17 * 60) + 30) - ((rptHour * 60) + rptMin)
clrHour = DatePart("h", clrdate)
clrMin = DatePart("n", clrdate)
If (clrHour = 17 And clrMin >= 30) Or clrHour > 17 Then
clrHour = 17
clrMin = 30
End If
If clrHour >= 9 Then
day2minsdiff = ((clrHour - 9) * 60) + clrMin
End If
If (DatePart("w", rptdate) = 1 Or DatePart("w", rptdate) = 7) Then minsdiff = 0
If (DatePart("w", clrdate) = 1 Or DatePart("w", clrdate) = 7) Then day2minsdiff = 0
minsdiff = minsdiff + day2minsdiff
hoursopen = CStr(minsdiff \ 60) + " Hrs "
minsopen = CStr(minsdiff - ((minsdiff \ 60) * 60)) + " Mins"
If Len(minsopen) = 1 Then minsopen = "0" + minsopen
strDisplay = hoursopen + minsopen
GetOpenHours = strDisplay
Case Else
rptHour = DatePart("h", rptdate)
If rptHour < 9 Then
rptHour = 9
rptMin = 0
Else
rptMin = DatePart("n", rptdate)
End If
minsdiff = ((17 * 60) + 30) - ((rptHour * 60) + rptMin)
clrHour = DatePart("h", clrdate)
clrMin = DatePart("n", clrdate)
If (clrHour = 17 And clrMin >= 30) Or clrHour > 17 Then
clrHour = 17
clrMin = 30
End If
If clrHour >= 9 Then
day2minsdiff = ((clrHour - 9) * 60) + clrMin
End If
If (DatePart("w", rptdate) = 1 Or DatePart("w", rptdate) = 7) Then minsdiff = 0
If (DatePart("w", clrdate) = 1 Or DatePart("w", clrdate) = 7) Then day2minsdiff = 0
minsdiff = minsdiff + day2minsdiff + ((diffDays - 1) * 510)
hoursopen = CStr(minsdiff \ 60) + " Hrs "
minsopen = CStr(minsdiff - ((minsdiff \ 60) * 60)) + " Mins"
If Len(minsopen) = 1 Then minsopen = "0" + minsopen
strDisplay = hoursopen + minsopen
GetOpenHours = strDisplay
End Select
End Function