2017-05-06 77 views
2

我想捕獲上個星期一的日期。所以,如果今天是2017年5月5日,那麼如果我打開Excel,我需要使用VBA在2017年1月5日(上週一)返回。使用WeekdayName函數獲取上個星期一

這是我的代碼:

Dim strdate As String 
Select Case WeekdayName(Now()) 
Case vbMonday 
    strdate = Now() 
Case vbTuesday 
    strdate = Now() - 1 
Case vbWednesday 
    strdate = Now() - 2 
Case vbThursday 
    strdate = Now() - 3 
Case vbFriday 
    strdate = Now() - 4 
Case vbSaturday 
    strdate = Now() - 5 
Case vbSunday 
    strdate = Now() - 6 
End Select 

任何人都可以說明爲什麼這不會返回預期的結果?

+1

嘗試工作日(),而不是WEEKDAYNAME() –

回答

0

我用這個:

Dim d As Date 
    d = Date 

Do Until Weekday(d) = vbMonday 
    d = DateAdd("y", -1, d) 
Loop 

'd = date of previous Monday 
4

此前週一的日期始終

PreviousMonday = Date - Weekday(Date - 1, vbMonday)