2011-08-31 75 views

回答

5

這是一種方法;

base_date = cdate("21 aug 2011") 

'get 1st thursday; 
thurs = dateserial(year(base_date), month(base_date), 1) 
if (weekday(thurs) <> 1) then thurs = 5 - weekday(thurs) + thurs 

'loop subsequent; 
do until month(thurs) <> month(base_date) 
    msgbox thurs 
    thurs = dateadd("d", 7, thurs) 
loop 
+0

編輯,因爲我誤讀,並認爲你想星期日 –

+0

謝謝,作品像一個治療! – ClareBear

+1

如果您使用[日期常量](http://msdn.microsoft.com/zh-cn/library/6da89dc2%28VS.85%29.aspx)(如vbThursday和vbSunday)而不是幻數,這將更容易理解。 –

0

雖然accepted answer做這項工作是過於複雜的東西,可以用WeekDay()功能和For迴路來完成。

Dim day 
Dim startdate: startdate = CDate("21 aug 2011") 
Dim enddate 
'Get first day of month. 
startdate = DateSerial(Year(startdate), Month(startdate), 1) 
'Get last day of month. 
enddate = DateAdd("m", 1, startdate) - 1 
For day = startdate To enddate 
    If WeekDay(day) = vbThursday Then WScript.Echo day & " = " & WeekDayName(WeekDay(day)) 
Next 

輸出:

04/08/2011 = Thursday 
11/08/2011 = Thursday 
18/08/2011 = Thursday 
25/08/2011 = Thursday 

任何Date and Time constant這裏可以用來尋找一個稍微修改一下不同或多個工作日。

相關問題