Comparar fechas en Microsoft Visual Basic para Aplicaciones no es diferente de comparar cualquier otro tipo de datos. Los valores que compare deben ser del tipo "Fecha". Puede usar los operadores de comparación estándar: "<" para "menor que"; "<=" para "menor o igual que"; ">" para "mayor que"; "> =" para "mayor o igual que"; "=" para "igual a"; y "<>" para "no es igual a". También puede usar dos operadores de comparación, "Es" e "No es".

página de calendario

Tipo de fecha de VBA

Es útil recordar cómo VBA almacena los valores de fecha en la memoria cuando compara fechas. Una fecha se almacena como un número de coma flotante de doble precisión, o un Doble. La porción entera larga es la cantidad de días, positivos o negativos, desde el 30 de diciembre de 1899. La porción decimal es la cantidad de tiempo que ha transcurrido desde la medianoche. Una fecha sin hora tiene su parte decimal establecida en cero. Por ejemplo, el 1 de mayo de 1967 se almacena como 24593.0. Esto significa que cuando VBA compara dos fechas, en realidad está comparando dos números que representan días.

Cadena de caracteres vs. Fecha

Cuando compara fechas en VBA, debe asegurarse de que los valores que compare tengan un tipo "Fecha" y no sean cadenas de caracteres. Por ejemplo, la cadena de caracteres "05/01/1999" es menor que la cadena de caracteres "31/12/1900" porque "05" viene antes de "12." Convierta una cadena de caracteres en un tipo de fecha utilizando la función "CDate", por ejemplo, "CDate (TextBox.Value)".

Funciones utiles

Además de CDate (), existen otras funciones útiles que puede usar al comparar fechas. La función "Fecha ()" proporciona la fecha de hoy como un valor de Fecha. La función "Ahora ()" proporciona la fecha y hora de hoy como un valor de fecha. Debido a que el tipo de datos Fecha también incluye un componente de tiempo, puede extraer solo la porción de fecha de una variable al comparar fechas utilizando la función "DateValue ()", por ejemplo, "Si envío> DateValue (fecha límite) Entonces ..."

Fecha aritmética

Debido a que una fecha se almacena como el número de días desde el 30 de diciembre de 1899, puede incluir la aritmética de fechas al comparar fechas en VBA. Por ejemplo, si un boleto caduca tres días después de haberlo comprado, puede verificar si hay un boleto vencido con un código VBA similar al siguiente:

Función pública expirada (compra como fecha) Como booleana expirada = Falso si compra + 3> Fecha () Entonces expirada = Verdadero Fin si Fin Función