Cadena VBA hasta la fecha - Convertir valores de cadena a la fecha en Excel VBA

Cadena de Excel VBA hasta la fecha

En Vba hay un método a través del cual podemos convertir una cadena dada en una fecha, y el método se conoce como función CDATE en vba, esta es una función incorporada en VBA y las partes requeridas para esta función son primero convertir la cadena a un número y luego convertimos el número dado en una fecha. El formato de resultado depende únicamente del formato de fecha del sistema.

Uno de los problemas comunes que todos enfrentamos con Excel es "Fecha y hora" y, a menudo, se almacenan como valores de texto y pasan desapercibidos inicialmente. Pero cuando se requiera que usen ese tiempo, sabremos que esos valores se almacenan como texto y no sabremos cómo tratarlos en absoluto. "Fecha y hora" son dos cosas combinadas en un elemento, pero una vez que esos valores se almacenan como valores de texto, es un dolor trabajar con ellos.

¿Cómo convertir valores de cadena a la fecha?

Ejemplo 1

Una vez que la variable VBA se declara y se asigna como Cadena, todo lo asignado a esa variable se tratará solo como cadena. Por ejemplo, mire el siguiente código.

Código:

Sub String_To_Date () Dim k As String k = "10-21" MsgBox k End Sub

En el código anterior, la variable "k" se define como el tipo de datos "Cadena", y para esta variable, hemos asignado el valor como "10-21".

Ok, ejecutemos el código y veamos qué obtenemos en el cuadro de mensaje en VBA.

Obtuvimos el valor como 10-21 solamente, pero por lo general, estos valores son una fecha, no valores de cadena. Entonces, aunque el tipo de datos asignado es "Cadena", aún podemos convertir a la fecha utilizando la función de conversión de tipo de datos CDATE VBA.

Código:

Sub String_To_Date () Dim k As String k = "10-21" MsgBox CDate (k) End Sub

En lo anterior, antes de mostrar el resultado de la variable “k” en el cuadro de mensaje, le hemos asignado la función CDATE. Se hace un pequeño ajuste, veamos qué impacto tiene.

Ahora veríamos el resultado como "Fecha" ya no como valor de "Cadena".

Ejemplo # 2

Ahora, mire el siguiente código para ver un ejemplo.

Código:

Sub String_To_Date () Dim k As String k = 43599 MsgBox k End Sub

En este momento, el código anterior mostraría el resultado como "43599", como asignamos anteriormente.

Pero una vez que usemos la función CDATE, se convertirá al valor de fecha.

Código:

Sub String_To_Date () Dim k As String k = 43599 MsgBox CDate (k) End Sub

El resultado después de aplicar la función CDATE es el siguiente.

Dado que Excel almacenó la fecha como números de serie, nuestro número de serie asignado 43599 es igual a la fecha 14/05/2019 cuando se aplica el formato de fecha.

También podemos aplicar el formato a la fecha como “DD-MMM-YYYY” para leer la fecha con precisión.

Código:

Sub String_To_Date1 () Dim k As String Dim DateValue As Date k = 43599 DateValue = CDate (k) MsgBox Format (DateValue, "DD-MMM-YYYY") End Sub

En lo anterior, he declarado una variable adicional para almacenar el resultado. Para esta variable, apliqué la función de conversión CDATE.

A continuación, he utilizado la función FORMAT para aplicar el formato del formato “DD-MMM-YYYY” y el resultado será el que se muestra a continuación.

Con esto, podemos leer claramente la parte del día y la parte del mes. También depende del formato de fecha de su sistema en Excel. Dado que el formato de fecha de mi sistema era "MM-DD-AAAA", se mostraba así, pero eso no debería ser un obstáculo para el formato.

Ejemplo # 3

Ahora veremos cómo se formatean las fechas como valores de texto en las celdas de la hoja de trabajo. A continuación se muestra la imagen de las fechas almacenadas como texto en una hoja de trabajo.

En la columna A de A2 a A12, tenemos valores de búsqueda de fecha, pero cuando miramos la pestaña de formato, muestra el formato de "Texto". Ahora necesitamos convertir estos valores de texto a la fecha.

A continuación se muestra el código que he escrito para convertir los valores de fecha con formato de texto a fechas reales.

Código:

Sub String_To_Date2 () Dim k As Long 'Los datos están en más de una celda, por lo que es necesario recorrer cada celda' Open For Loop For k = 2 To 12 'Los datos comienzan en la segunda fila y terminan en la 12a fila, por lo que de 2 a 12 Celdas (k, 2) .Value = CDate (Celdas (k, 1) .Valor) Siguiente k End Sub

Si ejecuta el código, nos dará el siguiente resultado.

Cosas para recordar

  • CDATE es una función de conversión de tipo de datos, pero se puede utilizar para convertir la fecha almacenada de la cadena VBA en valores de fecha reales.
  • El resultado del formato de la función CDATE depende únicamente del formato de fecha del sistema.
  • Las fechas se almacenan como números de serie en Excel, por lo que es necesario formatearlas para mostrarlas como fechas.

Articulos interesantes...