2011-08-31 81 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这里可以用来寻找一个稍微修改一下不同或多个工作日。

相关问题