Validación de fechas

Tengo una columna de fechas y quisiera saber como puedo validar las celdas para que cuando introduzca una fecha anterior a la inmediata superior, me muestre un aviso de ¡Ojo fecha! Por ejemplo.
También necesito saber como se nombran en lenguaje de macro a las celdas situadas arriba, abajo, izquierda y derecha de la celda sobre la que este el cursor: lo necesito porque he creado una macro que al ejecutarla me sitúa sobre la primera celda vacía de una columna y quisiera seguir dándole instrucciones en relación con las celdas que están situadas en su entorno.
Agradecido de antemano, recibe un abrazo.

1 respuesta

Respuesta
1
Recién vuelvo de mi fin de semana y acabo de ver tu pregunta.
Resolvería la primera parte de tu consulta utilizando una función interna de MS Excel, llamada Validación de datos. Estas suelen ser más rápidas y confiables que los desarrollos propios, aún aquellos hechos en VBA.
Si estuvieras de acuerdo, selecciona la celda donde se va a ingresar la fecha (supongamos C4) y haz click en la opción "Datos" | "Validación".
En la pantalla de "Configuración" selecciona de la lista desplegable de Permitir: la opción "Personalizada" y escribe, abajo, una fórmula como la siguiente:
=C4>C3
En la solapa siguiente, puedes incluir un mensaje al usuario alertándole que debe ingresar una fecha posterior a la de la celda superior.
Puedes colocar allí, algo así como.
Titulo:
Ingrese fecha posterior
Mensaje de entrada:
No se permite fecha anterior a la
Inidicada en la celda superior
Para que aparezca, al seleccionar esa celda, deben haber texto en ambas casillas y debe estar marcada la opción de Mostrar mensaje.
De igual manera, para advertir que se ingresó mal la fecha, esta herramienta prevé una pestaña para ingresar el mensaje correspondiente.
En Titulo, podrás colocar
¡Ojo fecha!
Y en mensaje de error, algo así:
Debe ingresar una fecha posterior
También debe estar marcada la opción de mostrar esto.
Al presionar Aceptar esta celda sólo permitirá ingreso de fechas posteriores.
Luego bastará que copies esta celda hacia abajo y el resto de ellas tendrán la misma restricción.-
----
En VBA, existen distintas maneras de referenciar a las celdas y su uso estará vinculado al gusto de cada programador. En lo personal, uso la función OFFSET(fila, columna) que ubica una celda (o rango) a partir de la referencia que le indiques o, por supuesto, desde la celda activa.
Su uso es:
PAra la celda inferior:
ActiveCell.Offset(1,0).Select 'selecciona la siguiente abajo
o
ActiveCell. Offset(1,0). Value 'lee el valor de la celda inferior.
En ambos casos, le estarás diciendo: A partir de la celda activa, toma la celda que está 1 fila abajo y cero columnas a la derecha.
Si quiere leer, la celda superior, el atributo "fila" debe ser negativo. Es decir:
ActiveCell. Offset(-1)...
Nota que no le indiqué columna, por lo cual VBA asume que es la misma actual.
Ya imaginarás que para referirse a la columna a la derecha de la celda actual, la instrucción será:
ActiveCell. Offset(0,1)
Mientras que para la celda a la izquierda es:
ActiveCell. Offset(0,-1)
Desde luego, puedes variar el número si quieres hacer referencia a una fila/columna que esté a mayor distancia.
Así:
Range("U2"). Offset(2,-3)
... considera la celda situada dos filas más abajo y tres columnas a la izquierda desde la celda U2 (es decir R4).
Bien, espero que esto te sea útil.
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas