VBA WeekdayName 関数:曜日名を取得する

はじめに

Excel VBA マクロの WeekdayName 関数から曜日名を取得する方法を紹介します。

WeekdayName 関数は、指定した曜日の名前を返します。

Weekday 関数」から取得した曜日の名前を取得します。

WeekdayName(1) なら 日曜日 を返します。

WeekdayName(1, True) なら を返します。

曜日の名前を取得したいときに使用します。

日付から曜日を取得するには「Weekday 関数」を使用します。
  • 目次
    • WeekdayName 関数
    • 解説
    • 使用例

WeekdayName 関数

WeekdayName(曜日)
1 (日曜日) ~ 7 (土曜日) の曜日の名前を取得します。

WeekdayName(曜日, 曜日名の省略, 最初の曜日)
曜日名の省略をするか指定できます。週の最初の曜日を指定できます。

引数「曜日」Weekday 関数で取得した値を指定します。
引数「曜日名の省略」省略できます。
True: 曜日名を省略する。
False または省略: 曜日名を省略しない。
引数「最初の曜日」省略できます。週の最初の曜日を何曜日にするか指定します。
戻り値の型文字列型 (String)

引数「最初の曜日」

曜日 説明
vbSunday (既定)日曜日を 1 とする。
vbMonday月曜日を 1 とする。
vbTuesday火曜日を 1 とする。
vbWednesday水曜日を 1 とする。
vbThursday木曜日を 1 とする。
vbFriday金曜日を 1 とする。
vbSaturday土曜日を 1 とする。

解説

引数「曜日」には「Weekday 関数」で取得した値を指定します。

引数「曜日」に 1 ~ 7 以外の値を指定すると「エラー 5 プロシージャの呼び出し、または引数が不正です。」が発生します。

引数「曜日名の省略」を省略するか False なら、日曜日 の形式で返します。

引数「曜日名の省略」が True なら、 の形式で返します。

引数「最初の曜日」には「Weekday 関数」の引数「最初の曜日」と同じ値を指定します。

結果を英語で取得するには「Format 関数」を使用します。

日曜日 以外の形式で取得するには「Choose 関数」を使用します。

使用例

曜日名を取得する。

1
Dim s As String
Dim i As Integer

i = Weekday("2017/1/1")
s = WeekdayName(i)
Debug.Print(s) ' 日曜日

s = WeekdayName(i, False)
Debug.Print(s) ' 日曜日

s = WeekdayName(i, True)
Debug.Print(s) ' 日

i = Weekday("2017/1/2")
s = WeekdayName(i)
Debug.Print(s) ' 月曜日

i = Weekday("2017/1/1", vbSunday)
s = WeekdayName(i, False, vbSunday) ' 1 が日曜日
Debug.Print(s) ' 日曜日

i = Weekday("2017/1/1", vbMonday)
s = WeekdayName(i, False, vbMonday) ' 1 が月曜日
Debug.Print(s) ' 日曜日

' Weekday と WeekdayName の最初の曜日が違うため結果がずれます。
i = Weekday("2017/1/1", vbSunday)
s = WeekdayName(i, False, vbMonday)
Debug.Print(s) ' 月曜日

曜日を英語で取得

Format 関数」を使用して、曜日を英語で取得できます。

Dim s As String
s = Format("2017/1/1", "ddd")
Debug.Print(s) ' Sun

s = Format("2017/1/1", "dddd")
Debug.Print(s) ' Sunday

s = Format("2017/1/1", "aaa")
Debug.Print(s) ' 日

s = Format("2017/1/1", "aaaa")
Debug.Print(s) ' 日曜日

好きな名前で取得

Choose 関数」を使用して、曜日を好きな名前で取得できます。

Dim s As String
Dim i As Integer

i = Weekday("2017/1/1")
s = Choose(i, "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日")
Debug.Print(s) ' 日曜日

i = Weekday("2017/1/1")
s = Choose(i, "にち", "げつ", "か", "すい", "もく", "きん", "ど")
Debug.Print(s) ' にち