Comparación de fechas en VBA

Comparar fechas en Microsoft Visual Basic para Aplicaciones no es diferente a comparar cualquier otro tipo de datos. Los valores que compare deben ser del tipo "Fecha". Puede utilizar 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 igual a". También puede usar dos operadores de comparación, "Es" y "No es".

Tipo de fecha VBA

Es útil recordar cómo VBA almacena valores de fecha en la memoria cuando compara fechas. Una fecha se almacena como un número de punto flotante de precisión doble o un Doble. La porción entera larga es el número de días, positivos o negativos, desde el 30 de diciembre de 1899. La porción decimal es la cantidad de tiempo transcurrido desde la medianoche. Una fecha sin tiempo tiene su parte decimal puesta a 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 compara tengan un tipo de "Fecha" y no sean cadenas de caracteres. Por ejemplo, la cadena de caracteres "01/05/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 mediante la función "CDate", por ejemplo, "CDate(TextBox.Value)".

Funciones útiles

Además de CDate(), hay 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 la hora de hoy como un valor de fecha. Dado que el tipo de datos de fecha también incluye un componente de hora, puede extraer solo la parte de la fecha de una variable al comparar fechas mediante la función "DateValue()", por ejemplo, "Si el envío> DateValue(fecha límite) Entonces..."

Aritmética de fechas

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

Función pública caducada (compra como fecha) Como booleano caducada =Falso Si compra+3> Fecha() Entonces caducada =Verdadero Finalizar si Finalizar función