CALCULATING RELATIVE DATE VALUES

. This method relies on the DateSerial function to generate the custom start and end dates.
So, if you're comfortable using VBA, try out this approach.
"I create a drop-down box with values like 'This Year,' 'Last Year,' 'Year to Date,' etc.
Then I use the following code for the AfterUpdate event.
Just a different way of doing it!"
Select Case cboDateRange.Value Case "This Month" txtStartDate.Locked = True txtEndDate.Locked = True txtStartDate = DateSerial(Year(Now()), Month(Now()), 1) txtEndDate = DateSerial(Year(Now()), Month(Now()) + 1, 0) Case "Last Month" txtStartDate.Locked = True txtEndDate.Locked = True txtStartDate = DateSerial(Year(Now()), Month(Now()) - 1, 1) txtEndDate = DateSerial(Year(Now()), Month(Now()), 0) Case "This Quarter" txtStartDate.Locked = True txtEndDate.Locked = True dbl = (Month(Now()) - 1) / 3 txtStartDate = DateSerial(Year(Now()), Int(dbl) * 3 + 1, 1) txtEndDate = DateSerial(Year(Now()), Int(dbl) * 3 + 4, 0) Case "Last Quarter" txtStartDate.Locked = True txtEndDate.Locked = True dbl = ((Month(Now()) - 1) / 3) - 1 txtStartDate = DateSerial(Year(Now()), Int(dbl) * 3 + 1, 1) txtEndDate = DateSerial(Year(Now()), Int(dbl) * 3 + 4, 0) Case "Year-To-Date" txtStartDate.Locked = True txtEndDate.Locked = True txtStartDate = DateSerial(Year(Now()), 1, 1) txtEndDate = Date Case "Last Year" txtStartDate.Locked = True txtEndDate.Locked = True txtStartDate = DateSerial(Year(Now()) - 1, 1, 1) txtEndDate = DateSerial(Year(Now()), 1, 0) Case Else txtStartDate.Locked = False txtEndDate.Locked = False txtStartDate = DateSerial(Year(Now()), Month(Now()) - 1, 1) txtEndDate = DateSerial(Year(Now()), Month(Now()), 0) txtStartDate.SetFocus End Select