Excel VBA - 查找上一个日期

时间:2012-08-23 23:52:52

标签: date excel-vba validation vba excel

您好我正在尝试对用户输入的日期范围进行一些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日,他们是否要继续。

希望这是有道理的。

1 个答案:

答案 0 :(得分: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等。