0

您好我正在尝试对用户输入的日期范围进行一些 UserForm 验证。

需要选择的日期范围是从周一到周日的前一周,例如。2012 年 8 月 13 日至 2012 年 8 月 19 日。因此,如果我今天(2012 年 8 月 24 日)运行报告,我如何才能确定我需要输入的日期是 2012 年 8 月 13 日至 2012 年 8 月 19 日,如果我运行明天报告。

我可以通过计算我运行报告的那一天(例如星期五)的 WeekDayName 来做到这一点,然后使用 DateAdd 减去第一个日期的前一个星期一(-11)并减去前一个星期日(- 5) 第二次约会。

因此,如果用户要输入 2012 年 8 月 14 日和 2012 年 8 月 19 日的日期范围,则会出现一个 msgbox,告诉他们应该输入的日期范围是 2012 年 8 月 13 日到 2012 年 8 月 19 日,他们是否要继续。

希望这是有道理的。

4

1 回答 1

0

这将起作用:

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

当您使用Weekday(myDate)它时,它会返回一个整数,它是自系统周开始以来经过的天数,我相信通常是星期日。所以Monday = 1等等。

于 2012-08-24T01:12:09.657 回答