HOME > 即効テクニック > AccessVBA > 日付・文字列操作・演算 > 指定された日付より前の一番近い月曜日の日付を取得する

即効テクニック

日付・文字列操作・演算

指定された日付より前の一番近い月曜日の日付を取得する

(Access 97)
サンプルでは、指定された日付が何曜日であるかを整数で返す
Weekday関数を使って次のようにして取得しています。
まず、指定した日付が日曜日だったら6日前の日付を取得します。
指定した日付が月曜日だったらその日を返します。
それ以外だったら、指定された日付の曜日を表す整数値に2を加算した日数分を指定した日付から引いて取得しています。

Sub GetMonDate()
    Dim myMon As Date

    Select Case Weekday(Date)
        Case 1       '日曜日
            myMon = Date - 6
        Case 2       '月曜日
            myMon = Date
        Case 3 To 7  '火曜日から土曜日
            myMon = Date - Weekday(Date) + 2
    End Select
    
    MsgBox "今日より前の一番近い月曜日は" & myMon & "です"

End Sub

Weekday関数の構文は、次のとおりです。

<構文> Weekday(date, [firstdayofweek])

引数dateは、日付を表す数式または文字列式を必ず指定します。
引数firstdayofweekは、省略可能です。週の第1日目の曜日を指定する定数です。
この定数を指定しない場合は、定数vbSundayを指定したとみなされます。 
引数firstdayofweekの設定値は次のとおりです。

定数     値  内容
vbUseSystem  0   NLS APIの設定値を使います
vbSunday   1   (既定値)日曜
vbMonday   2   月曜
vbTuesday   3   火曜
vbWednesday  4   水曜
vbThursday  5   木曜
vbFriday   6   金曜
vbSaturday  7   土曜


 Weekday関数は、次のいずれかの値を返します。

定数     値  内容 
vbSunday   1  日曜 
vbMonday   2  月曜 
vbTuesday  3  火曜 
vbWednesday 4  水曜 
VbThursday  5  木曜 
VbFriday   6  金曜 
VbSaturday  7  土曜