サイトについて      連絡先   検索

VBA Weekday 関数

はじめに

Excel VBA の Weekday 関数を紹介します。

Weekday 関数は、指定した日付の曜日を返します。

日付から曜日の値を取得したいときに使用します。

構文

Weekday(日付)

Weekday(日付, 最初の曜日)

名前 説明
引数「日付」曜日の値を取得したい日付を指定します。
引数「最初の曜日」省略できます。週の最初の曜日を何曜日にするか指定します。
戻り値数値型 (Integer)

引数「最初の曜日」

曜日 説明
vbSunday (既定)日曜日から土曜日までを 1 ~ 7 として結果を返します。
vbMonday月曜日から日曜日までを 1 ~ 7 として結果を返します。
vbTuesday火曜日から月曜日までを 1 ~ 7 として結果を返します。
vbWednesday水曜日から火曜日までを 1 ~ 7 として結果を返します。
vbThursday木曜日から水曜日までを 1 ~ 7 として結果を返します。
vbFriday金曜日から木曜日までを 1 ~ 7 として結果を返します。
vbSaturday土曜日から金曜日までを 1 ~ 7 として結果を返します。

解説

最初の曜日を省略したときは、日曜日を 1 として、月火水・・・が 2, 3, 4 ・・・になります。

最初の曜日に月曜日 (vbMonday) を指定したときは、月曜日を 1 として、火水木・・・が 2, 3, 4 ・・・になります。

引数「日付」に時刻を指定したときは、日付型の初期値 1899/12/30 の曜日が土曜日なのでその値を返します。

日付型に変換できない値を指定したときはエラーが発生します。

vbSunday などの曜日の定数が、最初の曜日を省略または vbSunday を指定したときの戻り値に対応しているので、通常は省略して使います。

使用例

1

Dim i As Integer

i = Weekday("2017/1/1")
Debug.Print (i) ' 1
i = Weekday("2017/1/2")
Debug.Print (i) ' 2

i = Weekday("2017/1/1", vbSunday)
Debug.Print (i) ' 1
i = Weekday("2017/1/2", vbSunday)
Debug.Print (i) ' 2

i = Weekday("2017/1/1", vbMonday)
Debug.Print (i) ' 7
i = Weekday("2017/1/2", vbMonday)
Debug.Print (i) ' 1

i = Weekday("1899/12/30")
Debug.Print (i) ' 7
i = Weekday("1:2:3")
Debug.Print (i) ' 7

i = Weekday("tips") ' エラー

最初の曜日を省略または vbSunday を指定すると、曜日ごとに条件分岐するのが簡単にできます。


Dim i As Integer
i = Weekday("2017/1/1")

' 曜日ごとに処理を分ける
Select Case i
    Case vbSunday
    Case vbMonday
    Case vbTuesday
    Case vbWednesday
    Case vbThursday
    Case vbFriday
    Case vbSaturday
End Select

関連ページ