その年の第何週目か知ることが出来る DatePart 関数に対し、引数として渡した日付が、 その月の何回目の曜日にあたるのかを返す関数です。
cf.1 DatePart 関数
cf.2 WeekDay 関数
cf.3 XX年X月の第X曜日の日付を返す関数。
Function FncDatePart(varDate As Variant) As Integer If IsDate(varDate) = False Then Exit Function Dim i(2) As Integer 'その日は年間の第何週目か? i(0) = DatePart("WW", varDate) 'その月の1日は年間の第何週目か? i(1) = DatePart("WW", varDate - Day(varDate) + 1) - 1 'その日の曜日が 1 日の曜日よりも前の曜日なら - 1, 以降の曜日なら 0 i(2) = Weekday(varDate) < Weekday(varDate - Day(varDate) + 1) FncDatePart = i(0) - i(1) + i(2) End Function使用例
MsgBox "今日は、第" & FncDatePart(Date) & Format(Date, "aaaa") & "です。" 今日は、第3木曜日です。
曜日は関係なく、ただ単純に月の第何週に当たるのかを求めるだけなら
DatePart("ww", 日付) – DatePart("ww", 日付 – Day(日付) + 1) + 1
で良いです。
式 日付 - Day(日付) + 1 は日付の月の1日が返ります。
DateSerial(Year(日付), Month(日付), 1) と同じ意味です。
cf.4 文書番号: 210604 – 最終更新日: 2007年5月21日 – リビジョン: 5.1
Microsoft Access で日付/時刻型の値の計算および表示を行うための関数