Please Note: This article is written for users of the following Microsoft Excel versions: 2007, 2010, and 2013. If you are using an earlier version (Excel 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Excel, click here: Limiting Entry of Prior Dates.

Limiting Entry of Prior Dates

by Allen Wyatt
(last updated May 9, 2015)

3

If you use the data validation capabilities of Excel, you can limit what goes into a cell, based on the contents of another cell. For instance, you can easily limit what goes into cell A2 based on a date that is in cell A1. Follow these steps:

  1. Select cell A2.
  2. Click the Data tab of the ribbon.
  3. Click Data Validation in the Data Tools group. Excel displays the Data Validation dialog box.
  4. Make sure the Settings tab is displayed. (See Figure 1.)
  5. Figure 1. The Settings tab of the Data Validation dialog box.

  6. Using the Allow drop-down list, choose Date.
  7. Using the Data drop-down list, choose Greater Than or Equal To.
  8. In the Start Date box, enter =A1. This tells Excel that the date must be greater than or equal to whatever date is in cell A1.
  9. Click OK.

Now, anytime you try to enter a date in cell A2 that is earlier than the date in cell A1, Excel displays an error message and will not allow the date to be entered.

What happens, however, when you want to limit the dates that can be entered in cell A1? For instance, if you put the date 4/1/04 in cell A1, and you want to make sure that the next date entered in A1 is not earlier than 4/1/04. If you put a date such as 4/15/04 in cell A1, that would be OK, but then the next time you enter a date in cell A1 you don't want it earlier than 4/15/04. In other words, you want to make sure that cell A1 can only accept dates later than the date currently in A1.

This is a bit stickier. If you follow the above steps but select cell A1 in step 1, then data validation won't work. Why? Because the date you enter in cell A1 will always be greater than or equal to the date you enter in A1—Excel doesn't compare to the previous date in A1 when doing data validation.

The only way to work through this problem is through the use of two macros. First, place the following macro in a regular module:

Sub Date_Validation()
    Dim dteDate As Date
    Dim strDate As String

    With Range("A1")
    '   Memo original date
        dteDate = CDate(.Text)
    '   Create date string
        strDate = Format(dteDate, "m\/d\/yy")
        With .Validation
        '   Delete old settings
            .Delete
        '   Set new data validation
            .Add _
              Type:=xlValidateDate, _
              AlertStyle:=xlValidAlertStop, _
              Operator:=xlGreaterEqual, _
              Formula1:=strDate

            .IgnoreBlank = False
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = "Invalid Date Entry"
            .InputMessage = ""
            .ErrorMessage = _
              "Date is older than the previous date (" & _
              dteDate & ")."
            .ShowInput = True
            .ShowError = True
        End With
    End With
End Sub

This macro needs to be called by another macro, this one placed in the worksheet's code window, so that it is triggered every time there is a change in the worksheet:

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target = Range("A1") Then Date_Validation
End Sub

The way these macros work is really quite interesting. Because you place the latter one in the worksheet's code window, it triggers every time there is a change to the worksheet. If the cell being changed is A1, then the Date_Validation macro is run.

The Date_Validation macro grabs the date from cell A1 and constructs a data validation rule for the cell. That's all it does—sets a data validation rule that won't allow a date to be entered in the cell that is earlier than the date currently in the cell.

The beauty of the macro is that once the data validation rule is in effect, then the next time cell A1 is changed, the data validation rule is triggered before the Worksheet_Change event is fired. Thus, the data validation rule makes sure that only a date greater than the current date can be entered. Once data validation is cleared, then the macro takes care of resetting the data validation rule, so it compares to the newly entered date.

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (10035) applies to Microsoft Excel 2007, 2010, and 2013. You can find a version of this tip for the older menu interface of Excel here: Limiting Entry of Prior Dates.

Author Bio

Allen Wyatt

With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He  is president of Sharon Parq Associates, a computer and publishing services company. ...

MORE FROM ALLEN

Getting Rid of Extra Quote Marks in Exported Text Files

If you don't like the way that Excel exports information you intend to use with other programs, then your best bet is to ...

Discover More

Generating a Power Efficiency Diagnostics Report

Your computer uses power to operate, and Windows has a great impact on how much power it uses. You can use a hidden Windows ...

Discover More

Adding Common Line Spacing Options

Sometimes the options presented by Word's tools don't exactly meet our formatting needs. Rather than changing the tools ...

Discover More

Professional Development Guidance! Four world-class developers offer start-to-finish guidance for building powerful, robust, and secure applications with Excel. The authors show how to consistently make the right design decisions and make the most of Excel's powerful features. Check out Professional Excel Development today!

More ExcelTips (ribbon)

Limiting Choices in a Cell

Want to limit what a person can enter into a particular cell? You can use Excel's data validation feature to help enforce ...

Discover More

Adding Pop-Up Documentation to a Cell

Want to have a small help screen pop up when a user selects a particular cell? This can be done by using data validation, as ...

Discover More

External Data Validation

When using data validation, you may want to reference a list of validation criteria contained on a different worksheet. ...

Discover More
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

View most recent newsletter.

Comments

If you would like to add an image to your comment (not an avatar, but an image to help in making the point of your comment), include the characters [{fig}] in your comment text. You’ll be prompted to upload your image when you submit the comment. Maximum image size is 6Mpixels. Images larger than 600px wide or 1000px tall will be reduced. Up to three images may be included in a comment. All images are subject to review. Commenting privileges may be curtailed if inappropriate images are posted.

What is 4 + 2?

2015-05-12 03:35:14

Des Lavender

Perhaps it's just me but I think that the screen shots would be of more use if they actually showed what we were supposed to be changing/selecting? Just saying.


2015-05-11 14:51:15

Buck

In the Data Validation Start Date field enter this formula to ensure that a date no earlier than 12 months before today is entered: =EOMONTH(TODAY(),-12)


2015-05-11 04:16:18

Morten

For cell A1 you could also a date directly into the data validation dialog. E.g. Allow Date Greater than Some date.


This Site

Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.

Newest Tips
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

(Your e-mail address is not shared with anyone, ever.)

View the most recent newsletter.