Conversión de cadena a fecha (VBA)

Resuelto

Hola,

Tengo una columna de Excel "vencimiento" cuyo valor se presenta en la forma ddMM, es decir, 101 para el 01/01, 2412 para el 24/12, etc...

Quiero transformar eso en una fecha del año en curso (sin necesariamente mostrarla), para poder hacer un cálculo en relación a la fecha de hoy.

Sin embargo, no logré realizar la conversión. ¿Podrías ayudarme? Gracias.

Detalles:

El objetivo es convertir este vencimiento en una fecha para, posteriormente, filtrar automáticamente al abrir, las filas que tengan un vencimiento dentro de los 30 días a partir de la fecha de hoy.

Como un CDate o DateFormat directo no funciona (calcula el 10/04/1900 para el vencimiento 101), pensé en algo como esto, pero no funciona (sin contar que el Left será erróneo a menudo):

Sub Auto_Open() For c = 7 To Cells(Rows.Count, 2).End(xlUp).Row D = Right(c, 2) E = Left(c, 2) CDate(Range(c) = E & "/" & D) ​​​​​​​.... Next c End Sub

2 respuestas

  1. Hola

    Prueba esto, tu "fecha" siendo de tipo entero

    Public Function cvdate(d As Integer) As Date Dim j As Long, m As Long, a As Long, cvd As String a = Year(Date) m = d Mod 100 j = d \ 100 cvd = CDate(j & "/" & m & "/" & a) cvdate = cvd End Function

    o esto, la fecha siendo de tipo texto

    Public Function cvsdate(d As String) As Date Dim j As Long, m As Long, a As Long, cvd As String a = Year(Date) m = Right(d, 2) j = Left(d, Len(d) - 2) cvd = CDate(j & "/" & m & "/" & a) cvsdate = cvd End Function

    Saludos

    1. Hola,

      Y gracias.

      Me molesta un poco que sea una función, pero funciona.

      Saludos.

      1. Me molesta un poco que sea una función

        Puedes limitarte a recuperar la parte de la función que fabrica la fecha para integrarla en tu código.

        PD. ¡Siempre vale la pena crear una herramienta (aquí una función) aunque solo la utilicemos una vez!

        Buen provecho