Error de función correcta de Excel VBA


0

Estoy tratando de actualizar automáticamente el intervalo de fechas en la parte superior de mi informe en Excel en función del intervalo de fechas de los datos que descargo de una base de datos de texto. En la macro que se muestra a continuación, aparece un error de tiempo de ejecución '13': no ​​coincide el tipo PEndDt = Right(PaidDateRange, 8).

Creo que la variable Fecha, PEndDt, no le gusta obtener una Cadena. ¡Pero he asignado cadenas a las variables de fecha en otras macros! Ahora no sé cómo solucionar esto. Ayuda por favor.

Sub test()

Dim PEndDt As Date
Dim PaidDateRange As String

PaidDateRange = "PAID DATE  1/01/13 -  9/31/13"
PEndDt = Right(PaidDateRange, 8)
Range("A1") = "Report thru " & Format(PEndDt, "Long Date")

End Sub

Respuestas:


2

El problema está en la cadena.

31/09/13 no es una fecha válida.

31/09/2013 tampoco es una fecha válida.


+1 Good Catch, actualicé mi publicación para analizar la cadena y usar DateSerial ()
Portland Runner

¡Gracias! Algunas veces estoy tan atrapado en el código que extraño cosas simples como el hecho de que no hay 31 días en septiembre. Mi macro ahora funciona.
irockyoursocks

1

Tendrá que analizar la cadena en formato de mes, día y año.

Dim itemDate as String
itemDate = Right(PaidDateRange, 8)

PEndDt = DateSerial(Right(itemDate, 2), Left(itemDate, 2), Mid(itemDate, 4, 2))

Si solo lo está volviendo a poner en una cadena, ¿por qué convertir a fecha?

Range("A1") = "Report thru " & Right(PaidDateRange, 8)

Elegí convertir a una variable de tipo de fecha para que el espacio inicial desapareciera. Como obtengo estos datos de una base de datos de texto, puede haber un espacio delante de la fecha. La forma más fácil de procesar este espacio es usar una variable de formato de fecha. Convierte "01/09/13" en "1/9/2013" sin ningún código adicional. También permite que "12/01/13" se analice correctamente.
irockyoursocks
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.