Comprensión de la función IsDate de Excel VBA

La función IsDate de VBA supuestamente le dice si una cadena de texto se puede interpretar como una fecha. Por ejemplo, todas las siguientes expresiones se evalúan como Verdadero:

IsDate ("25/5/2015")
IsDate ("16 de enero")
IsDate ("12-1")
IsDate ("1/12/15")
IsDate ("2/30")
IsDate ("30/2")

En los dos últimos ejemplos, observe que IsDate no es exigente con el orden del día y el mes. Ambas cadenas podrían interpretarse como una fecha, por lo que IsDate devuelve True (independientemente de la configuración del formato de fecha del sistema).

Aquí hay información de un artículo de soporte de Microsoft :

Las funciones de fecha de VBA IsDate, Format, CDate y CVDate utilizan una función que se encuentra en OLE Automation (OleAut32.dll). Esta función busca todos los formatos de fecha posibles mediante la tokenización de cada uno de los valores separados en la cadena que representa la fecha y devuelve un valor booleano que indica si la entrada se puede representar como una fecha.

Es importante recordar esto al utilizar la función para interpretar una fecha que contiene un año de 2 dígitos. Las diferentes configuraciones regionales utilizan varios formatos de fecha (es decir, mm / dd / aa, aa / mm / dd, " DD MMM YY " , " YY MMM DD " , etc.) y, por lo tanto, la función prueba los dígitos en todas las posiciones hasta que La función ha encontrado una fecha válida o ha agotado todas las posibilidades.

El hecho de que IsDate reconozca una cadena como una fecha no significa que la cadena se pueda convertir de manera confiable en una fecha. En algunos casos, el resultado es ambiguo. Por ejemplo, ¿qué pasa con esta expresión?

IsDate ("29-feb-01")

El 29 de febrero de 2001 no es una fecha válida. Sin embargo, esta expresión devuelve Verdadero porque el 1 de febrero de 1929 (y el 2 de enero de 1929) son fechas válidas. Y también lo son esas mismas fechas en 2029.

La búsqueda de la documentación de IsDate resultó vacía. Según las pruebas, IsDate acepta cualquiera de los siguientes caracteres como separador: una barra inclinada (/), un guión (-), una coma (,), un punto (.) Y un espacio.

Por lo tanto, las siguientes expresiones devuelven True:

IsDate ("5.1")
IsDate ("30 6")
IsDate ("30,6")
IsDate ("1/2")

Pero luego está esta anomalía: las siguientes expresiones devuelven True:

IsDate ("5.1.5")
IsDate ("5.1.05")

Sin embargo, de forma inexplicable, esta expresión devuelve False:

IsDate ("5.1.2005")

Suponga que creó un UserForm con un InputBox donde el usuario ingresa una fecha. Debe quedar claro que usar IsDate para validar la entrada no es muy confiable.

Las cosas se vuelven aún más confusas cuando se da cuenta de que IsDate también cubre valores de tiempo. (No hay una función IsTime correspondiente). Por lo tanto, las siguientes expresiones devuelven True:

IsDate ("4:45")
IsDate ("4.45")
IsDate ("4 45")
IsDate ("4/45")
IsDate ("23:59")

Estas expresiones devuelven falso:

IsDate ("4:60")
IsDate ("24,45")

Es importante señalar que IsDate no exhibe todas estas peculiaridades cuando pasa un argumento Range. Por ejemplo:

IsDate (rango ("A1"))

Parece que IsDate es perfectamente confiable para identificar celdas que contienen una fecha o una hora. Por ejemplo, no identifica una celda que contiene 5.1 como fecha. Si su código necesita determinar si una cadena se puede interpretar como una fecha, la mejor solución es poner esa cadena en una celda y luego escribir código para verificar el contenido de la celda.


Hoja inteligente 9.1.1

Hoja inteligente 9.1.1

Smartsheet es una plataforma de trabajo dinámica que le permite gestionar proyectos, crear flujos de trabajo y colaborar con su equipo.

Compartirpunto

Compartirpunto

SharePoint es un sistema de colaboración basado en web que utiliza una variedad de aplicaciones de flujo de trabajo, bases de datos de "listas" y otros componentes web, así como funciones de seguridad para dar control a los grupos empresariales que trabajan juntos.

Calendario perpetuo 1.0.38/1.0.36

Calendario perpetuo 1.0.38/1.0.36

Van Nien Calendar es una aplicación de visualización de calendario en su teléfono, que le ayuda a ver rápidamente la fecha lunisolar en su teléfono, organizando así su importante trabajo.

Outlook 2021

Outlook 2021

Microsoft Outlook es una aplicación empresarial y de productividad desarrollada por Microsoft Corporation.

Haga clic arriba

Haga clic arriba

ClickUp es una de las plataformas de productividad mejor calificadas para cualquier empresa. Grandes empresas como Google, Booking.com, San Diego Padres y Uber utilizan ClickUp para aumentar la productividad en el lugar de trabajo.

Visor de PDF-XChange 2.5.322.10

Visor de PDF-XChange 2.5.322.10

PDF se ha convertido en un formato de uso común para leer, crear y enviar documentos de texto. A su vez, se ha producido un aumento en el número de programas utilizados para este tipo de documentación. PDF-XChange Viewer se encuentra entre un número creciente de visores de PDF.

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice ofrece un conjunto completo de aplicaciones de Office que rivalizan con Microsoft 365, especialmente en Excel, PowerPoint y Word. Le permite gestionar sus proyectos de forma más eficaz y admite varios formatos de archivo.

Descargar iTaxviewer 1.8.7

Descargar iTaxviewer 1.8.7

El software iTaxViewer es el software de lectura de archivos XML más popular en la actualidad. Este software es una aplicación de lectura de declaraciones electrónicas de impuestos en formato XML de la Dirección General de Tributación.

Lector de PDF Nitro

Lector de PDF Nitro

Nitro PDF Reader es un práctico editor de PDF que cubre todas las tareas básicas que la mayoría de las personas realizan todos los días con documentos PDF.

Lector Foxit 12

Lector Foxit 12

Foxit Reader es principalmente un lector de PDF y también le permite crear archivos PDF, firmarlos, editarlos y agregar anotaciones. Funciona en sistemas operativos, existen complementos para varios programas del paquete Microsoft Office.