Option Explicit
Private Function BeginPreviousMonth(DateToCheck As Date) As Date
'Replaces the day number with 01
BeginPreviousMonth = Format(DateAdd("m", -1, DateToCheck), "mmm, 01, yyyy")
End Function
Private Function EndPreviousMonth(DateToCheck As Date) As Date
'Returns the day before the first day of the month after the previous month
EndPreviousMonth = DateAdd("m", 1, BeginPreviousMonth(DateToCheck)) - 1
End Function
Private Function BeginExpirationInNumYears(DateToCheck As Date, NumYears As Long) As Date
BeginExpirationInNumYears = DateAdd("yyyy", NumYears, BeginPreviousMonth(DateToCheck))
End Function
Private Function EndExpirationInNumYears(DateToCheck As Date, NumYears As Long) As Date
EndExpirationInNumYears = DateAdd("yyyy", NumYears, EndPreviousMonth(DateToCheck))
End Function
Sub test1()
MsgBox BeginExpirationInNumYears(Date, 2)
End Sub
Sub test2()
MsgBox EndExpirationInNumYears(Date, 3)
End Sub