NextDay Function

This function determines the date of the next day entered by the user, based on the date entered. For example, If the user enters a date of 12/23/2005 (which happens to have be a Friday) and a day of SAT, the function will return 12/24/2005. A date of 12/23/2005 and a day of MON will return 12/26/2005, the following Monday.

Function NextDay(P_FirstDate As Variant, P_Day As String) As Variant
Dim V_DateDifference As Integer
Dim V_NextDay As Variant
Dim v_FirstDate As Date

v_FirstDate = P_FirstDate

Select Case Weekday(P_FirstDate)
Case 1
Select Case P_Day
Case "MON"
V_NextDay = DateAdd("d", v_FirstDate, 1)
Case "TUE"
V_NextDay = DateAdd("d", v_FirstDate, 2)
Case "WED"
V_NextDay = DateAdd("d", v_FirstDate, 3)
Case "THU"
V_NextDay = DateAdd("d", v_FirstDate, 4)
Case "FRI"
V_NextDay = DateAdd("d", v_FirstDate, 5)
Case "SAT"
V_NextDay = DateAdd("d", v_FirstDate, 6)
Case "SUN"
V_NextDay = DateAdd("d", v_FirstDate, 7)
End Select
Case 2
Select Case P_Day
Case "MON"
V_NextDay = DateAdd("d", v_FirstDate, 7)
Case "TUE"
V_NextDay = DateAdd("d", v_FirstDate, 1)
Case "WED"
V_NextDay = DateAdd("d", v_FirstDate, 2)
Case "THU"
V_NextDay = DateAdd("d", v_FirstDate, 3)
Case "FRI"
V_NextDay = DateAdd("d", v_FirstDate, 4)
Case "SAT"
V_NextDay = DateAdd("d", v_FirstDate, 5)
Case "SUN"
V_NextDay = DateAdd("d", v_FirstDate, 6)
End Select
Case 3
Select Case P_Day
Case "MON"
V_NextDay = DateAdd("d", v_FirstDate, 6)
Case "TUE"
V_NextDay = DateAdd("d", v_FirstDate, 7)
Case "WED"
V_NextDay = DateAdd("d", v_FirstDate, 1)
Case "THU"
V_NextDay = DateAdd("d", v_FirstDate, 2)
Case "FRI"
V_NextDay = DateAdd("d", v_FirstDate, 3)
Case "SAT"
V_NextDay = DateAdd("d", v_FirstDate, 4)
Case "SUN"
V_NextDay = DateAdd("d", v_FirstDate, 5)
End Select
Case 4
Select Case P_Day
Case "MON"
V_NextDay = DateAdd("d", v_FirstDate, 5)
Case "TUE"
V_NextDay = DateAdd("d", v_FirstDate, 6)
Case "WED"
V_NextDay = DateAdd("d", v_FirstDate, 7)
Case "THU"
V_NextDay = DateAdd("d", v_FirstDate, 1)
Case "FRI"
V_NextDay = DateAdd("d", v_FirstDate, 2)
Case "SAT"
V_NextDay = DateAdd("d", v_FirstDate, 3)
Case "SUN"
V_NextDay = DateAdd("d", v_FirstDate, 4)
End Select
Case 5
Select Case P_Day
Case "MON"
V_NextDay = DateAdd("d", v_FirstDate, 4)
Case "TUE"
V_NextDay = DateAdd("d", v_FirstDate, 5)
Case "WED"
V_NextDay = DateAdd("d", v_FirstDate, 6)
Case "THU"
V_NextDay = DateAdd("d", v_FirstDate, 7)
Case "FRI"
V_NextDay = DateAdd("d", v_FirstDate, 1)
Case "SAT"
V_NextDay = DateAdd("d", v_FirstDate, 2)
Case "SUN"
V_NextDay = DateAdd("d", v_FirstDate, 3)
End Select
Case 6
Select Case P_Day
Case "MON"
V_NextDay = DateAdd("d", v_FirstDate, 3)
Case "TUE"
V_NextDay = DateAdd("d", v_FirstDate, 4)
Case "WED"
V_NextDay = DateAdd("d", v_FirstDate, 5)
Case "THU"
V_NextDay = DateAdd("d", v_FirstDate, 6)
Case "FRI"
V_NextDay = DateAdd("d", v_FirstDate, 7)
Case "SAT"
V_NextDay = DateAdd("d", v_FirstDate, 1)
Case "SUN"
V_NextDay = DateAdd("d", v_FirstDate, 2)
End Select
Case 7
Select Case P_Day
Case "MON"
V_NextDay = DateAdd("d", v_FirstDate, 2)
Case "TUE"
V_NextDay = DateAdd("d", v_FirstDate, 3)
Case "WED"
V_NextDay = DateAdd("d", v_FirstDate, 4)
Case "THU"
V_NextDay = DateAdd("d", v_FirstDate, 5)
Case "FRI"
V_NextDay = DateAdd("d", v_FirstDate, 6)
Case "SAT"
V_NextDay = DateAdd("d", v_FirstDate, 7)
Case "SUN"
V_NextDay = DateAdd("d", v_FirstDate, 1)
End Select
End Select
NextDay = V_NextDay
End Function