Si usa las capacidades de validación de datos de Excel, puede limitar lo que entra en una celda, según el contenido de otra celda. Por ejemplo, puede limitar fácilmente lo que entra en la celda A2 según una fecha que esté en la celda A1. Siga estos pasos:

  1. Seleccione la celda A2.

  2. Elija Validación en el menú Datos. Excel muestra el cuadro de diálogo Validación de datos.

  3. Asegúrese de que se muestre la pestaña Configuración. (Ver figura 1)

  4. Usando la lista desplegable Permitir, elija Fecha.

  5. Usando la lista desplegable de Datos, elija Mayor que o Igual a.

  6. En el cuadro Fecha de inicio, ingrese = A1. Esto le dice a Excel que la fecha debe ser mayor o igual a cualquier fecha que esté en la celda A1.

  7. Haga clic en Aceptar.

Ahora, cada vez que intente ingresar una fecha en la celda A2 que sea anterior a la fecha en la celda A1, Excel muestra un mensaje de error y no permitirá que se ingrese la fecha.

Sin embargo, ¿qué sucede cuando desea limitar las fechas que se pueden ingresar en la celda A1? Por ejemplo, si coloca la fecha 4/1/04 en la celda A1 y desea asegurarse de que la próxima fecha ingresada en A1 no sea anterior al 4/1/04. Si coloca una fecha como 15/04/04 en la celda A1, estaría bien, pero la próxima vez que ingrese una fecha en la celda A1 no la querrá antes del 15/04/04. En otras palabras, desea asegurarse de que la celda A1 solo pueda aceptar fechas posteriores a la fecha actual en A1.

Esto es un poco más pegajoso. Si sigue los pasos anteriores pero selecciona la celda A1 en el paso 1, la validación de datos no funcionará. ¿Por qué? Debido a que la fecha que ingresa en la celda A1 siempre será mayor o igual a la fecha que ingresó en A1, Excel no se compara con la fecha anterior en A1 al realizar la validación de datos.

La única forma de solucionar este problema es mediante el uso de dos macros. Primero, coloque la siguiente macro en un módulo normal:

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

Esta macro debe ser llamada por otra macro, esta colocada en la ventana de código de la hoja de trabajo, de modo que se active cada vez que haya un cambio en la hoja de trabajo:

Private Sub Worksheet_Change(ByVal Target As Range)

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

La forma en que funcionan estas macros es realmente bastante interesante. Debido a que coloca el último en la ventana de código de la hoja de trabajo, se activa cada vez que hay un cambio en la hoja de trabajo. Si la celda que se cambia es A1, se ejecuta la macro Date_Validation.

La macro Date_Validation toma la fecha de la celda A1 y construye una regla de validación de datos para la celda. Eso es todo lo que hace: establece una regla de validación de datos que no permitirá que se ingrese una fecha en la celda que sea anterior a la fecha actualmente en la celda.

La belleza de la macro es que una vez que la regla de validación de datos está en vigor, la próxima vez que se cambia la celda A1, la regla de validación de datos se activa antes de que se active el evento Worksheet_Change. Por lo tanto, la regla de validación de datos asegura que solo se pueda ingresar una fecha mayor que la fecha actual. Una vez que se borra la validación de datos, la macro se encarga de restablecer la regla de validación de datos, por lo que se compara con la fecha recién ingresada.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (2960) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

link: / excelribbon-Limiting_Entry_of_Prior_Dates [Limitación de la entrada de fechas anteriores].