Comparación de fechas en VBA

Por darrin koltow
Comparación de fechas en VBA
friday the 13th image by timur1970 from Fotolia.com

La comparación de fechas en VBA, o Visual Basic para Aplicaciones, es esencialmente la misma operación que se realiza al comparar enteros. Para hacer más fácil la comparación de fechas y simplificar el trabajo con ellas en general puedes usar nombres de variables que indiquen un tipo "Date". Por ejemplo, escribe "fec1" o "cumpleaños1". Para comprender cómo se comparan las fechas puedes escribir programas pequeños que realicen dicha comparación y puedes usar el modo de ejecución paso a paso en el ambiente de programación de VBA junto con la ventana "Vista rápida" del ambiente para observar dichas comparaciones en tiempo real.

Determinación del tipo

No es necesario que conviertas fechas al tipo de datos "Date" para hacer comparaciones si ya se encuentran en dicho tipo. Puedes saber si un variable es "Date" usando un par de métodos. Revisa la sección de declaraciones al inicio de un procedimiento de VBA. Esta sección es la parte en la que declaras todas las variables usando la palabra clave "Dim". Tus variables de fecha serán declaradas con instrucciones como la siguiente: "Dim d1 as Date". Otra forma de saber si tu variable es de tipo "Date" es revisando las asignaciones que se hacen hacia esa variable. Estas asignaciones usarán el carácter "#", que denota un tipo "Date". Por ejemplo, la siguiente instrucción asigna la fecha "12/1/2001" a la variable "D1" que es "Date".

D1 = #12/1/2001#

Cómo convertir al tipo de dato "Date"

Para comparar fechas en VBA primero debes tener dos fechas almacenadas en "Date", que es uno de los diferentes tipos de valores en VBA. El tipo "Date" es una instancia especial del tipo de dato entero, por lo que comparar fechas es esencialmente lo mismo que comparar enteros. Si tus fechas aún no se encuentran en "Date" necesitarás convertirlas. Puedes hacerlo empleando la función CDate. Por ejemplo, ejecuta la siguiente instrucción para convertir la cadena "12/1/2001" a un tipo "Date":

D1 = CDate ("12/1/2001")

La comparación

Si quieres revisar si la fecha en una variable "Date" ocurre antes de otra, usa el símbolo 'menor a' como se muestra en el siguiente ejemplo:

If (d1 < d2)

Usa el símbolo 'mayor a' para revisar si una fecha ocurre después de otra, y usa el símbolo 'igual' para saber si los valores de ambas variables se refieren a la misma fecha.

Programa de ejemplo

Escribe un programa de ejemplo que convierta y compare fechas, de manera que puedas hacer referencia a ese código al escribir programas de VBA más complejos para realizar dicho procedimiento. Abre el ambiente de programación en alguna de las aplicaciones de Office haciendo clic en el botón "Visual Basic" de la pestaña "Desarrollador". Después pega el siguiente programa en la ventana central del ambiente. Este usa la función "CDate" para convertir cadenas a fechas y realiza tres comparaciones diferentes entre dos de ellas. Ejecuta el programa presionando "F5" y observa la salida revisando la ventana "Inmediato".

Public Sub CompareDates() Dim d1, d2 As Date d1 = CDate("12/1/2001") d2 = CDate("12/1/2002") If (d1 < d2) Then Debug.Print "Date 1 occurs earlier than date 2." If (d1 > d2) Then Debug.Print "Date 1 occurs later than date 2." If (d1 = d2) Then Debug.Print "Date 1 is the same as date 2." End Sub

Referencias