更新日:、 作成日:
VBA Weekday 関数:曜日を取得する
はじめに
Excel VBA マクロの Weekday 関数から曜日を取得する方法を紹介します。
Weekday 関数は、指定した日付の曜日を数値で返します。
日月火水木金土 の順番に 1,2,3,4,5,6,7 の値を返します
日曜日なら 1 を返します。
日付の曜日を取得や判定したいときに使用します。
曜日の名前を取得するには「WeekdayName 関数」を使用します。
Weekday 関数の引数と戻り値
Weekday(日付)
日付の曜日を 1 (日曜) ~ 7 (土曜) の値で取得します。
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,5,6,7 の値を返します。
引数「最初の曜日」が vbMonday (月曜日) なら、月火水木金土日 の順番に 1,2,3,4,5,6,7 の値を返します。
引数「日付」が時刻なら、日付型の初期値 1899/12/30 が土曜日なのでその値を返します。
引数「日付」が数値なら、日付型の初期値 1899/12/30 にその数値の日を足した日付の曜日を返します。
VbDayOfWeek 列挙型の値が、日曜日を 1 とした値に対応しているので、通常は引数「最初の曜日」を省略します。
使用例
Weekday 関数の使用例を紹介します。
曜日を取得する
曜日を取得します。
Dim i As Integer
i = Weekday("2017/1/1") ' 日曜日が 1
Debug.Print(i) ' 1
i = Weekday("2017/1/2")
Debug.Print(i) ' 2
i = Weekday("2017/1/1", vbSunday) ' 日曜日が 1
Debug.Print(i) ' 1
i = Weekday("2017/1/2", vbSunday)
Debug.Print(i) ' 2
i = Weekday("2017/1/1", vbMonday) ' 月曜日が 1
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") ' 1899/12/30 1:02:03 の曜日
Debug.Print(i) ' 7
i = Weekday(1) ' 1899/12/31 の曜日
Debug.Print(i) ' 1
曜日を判定する
曜日を判定して条件分岐するには vbSunday などは VbDayOfWeek 列挙型の値を使用すると便利です。
' 曜日を判定して分岐する
Select Case Weekday("2017/1/1")
Case vbSunday
Case vbMonday
Case vbTuesday
Case vbWednesday
Case vbThursday
Case vbFriday
Case vbSaturday
End Select
曜日名を取得する
「WeekdayName 関数」を使用して、曜日名を取得できます。
Dim s As String
Dim i As Integer
i = Weekday("2017/1/1")
s = WeekdayName(i)
Debug.Print(s) ' 日曜日
s = WeekdayName(i, True)
Debug.Print(s) ' 日
スポンサーリンク