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