指定した日付の曜日がその月の第何曜日なのかを返す関数。

その年の第何週目か知ることが出来る 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 で日付/時刻型の値の計算および表示を行うための関数

, , ,

  1. コメントする

コメントを残す