Excel VBA - Encuentra la fecha anterior

Hola, estoy tratando de validar un formulario de usuario para el rango de fechas ingresado por un usuario.

El intervalo de fechas que debe seleccionarse es para la semana anterior de lunes a domingo, por ejemplo. 13 de agosto de 2012 al 19 de agosto de 2012. Entonces, si tuviera que ejecutar el informe hoy (24 de agosto de 2012), ¿cómo puedo saber que las fechas que debo ingresar son del 13 de agosto de 2012 al 19 de agosto de 2012? informe mañana.

¿Puedo hacerlo calculando el WeekDayName del día en el que estoy ejecutando el informe (por ejemplo, el viernes) y de ahí uso DateAdd para restar al lunes anterior (-11) para la primera fecha y restar al domingo anterior (- 5) para la segunda fecha.

Entonces, si el usuario ingresara el rango de fechas del 14 de agosto de 2012 y el 19 de agosto de 2012, aparecerá un cuadro de mensaje que le indicará que el rango de fechas que debe ingresar es del 13 de agosto de 2012 al 19 de agosto de 2012 y desea continuar.

Espero que esto tiene sentido.

preguntado el 24 de agosto de 12 a las 00:08

Si siempre es una semana, ¿por qué no dejarles ingresar solo la fecha de inicio? -

1 Respuestas

Así funciona:

Sub testDate()

    Dim myDate As Date
    myDate = "8/14/2012"

    Dim weekStartDate As Integer
    weekStartDate = 2
    'set for the sunday -> sunday for the given date

    Dim startDate, endDate As Date
    startDate = myDate - Weekday(myDate) + weekStartDate   'take current date, find system weekstart (Sunday), adjust accordingly
    endDate = startDate + 6    'you are only adding 6 days to your week it seems?

    MsgBox ("Please select a date between " & startDate & " and " & endDate)

End Sub

Cuando se utiliza Weekday(myDate) devuelve un número entero que es el número de días que han pasado desde el inicio de la semana del sistema, que creo que normalmente será el domingo. Asi que Monday = 1 etc.

Respondido 24 ago 12, 02:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.