Public Function NextDay(Day As String, Optional StartDate As Date) As Date
' Created By: Mike Krailo
' Returns the Next hard Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday date in the future
' To get the previous day, just subtract 7 from the result
' To get next day, just add 7
Dim CurrDay As Integer
Dim Today As Date
Dim ThisDay As Date
If Nz(StartDate) Then
Today = Date
Else
Today = StartDate
End If
CurrDay = Weekday(Today, vbSunday)
Select Case UCase(Day)
Case "SUN", "SUNDAY"
ThisDay = Today - CurrDay + 1
NextDay = Today + 8 - CurrDay
If CurrDay <= 7 Then
Exit Function
Else
NextDay = ThisDay
End If
Case "MON", "MONDAY"
ThisDay = Today - CurrDay + 2
NextDay = Today + 9 - CurrDay
If CurrDay > 1 Then
Exit Function
Else
NextDay = ThisDay
End If
Case "TUE", "TUESDAY"
ThisDay = Today - CurrDay + 3
NextDay = Today + 10 - CurrDay
If CurrDay > 2 Then
Exit Function
Else
NextDay = ThisDay
End If
Case "WED", "WEDNESDAY"
ThisDay = Today - CurrDay + 4
NextDay = Today + 11 - CurrDay
If CurrDay > 3 Then
Exit Function
Else
NextDay = ThisDay
End If
Case "THU", "THURSDAY"
ThisDay = Today - CurrDay + 5
NextDay = Today + 12 - CurrDay
If CurrDay > 4 Then
Exit Function
Else
NextDay = ThisDay
End If
Case "FRI", "FRIDAY"
ThisDay = Today - CurrDay + 6
NextDay = Today + 13 - CurrDay
If CurrDay > 5 Then
Exit Function
Else
NextDay = ThisDay
End If
Case "SAT", "SATURDAY"
ThisDay = Today - CurrDay + 7
NextDay = Today + 14 - CurrDay
If CurrDay > 6 Then
Exit Function
Else
NextDay = ThisDay
End If
End Select
End Function