WeekdayName関数:曜日を表す数値から曜日名を取得する

WeekdayName 関数は Excel VBA で用意されている関数の一つで、引数に指定した曜日を表す数値から日曜日や月曜日などの曜日名の文字列を取得します。ここでは Excel VBA における WeekdayName 関数の使い方について解説します。

(Last modified: )

WeekdayName関数の定義と使い方

WeekdayName 関数は引数に指定した曜日を表す数値から曜日名の文字列を取得します。

WeekdayName(weekday)

1 番目の引数に対象となる曜日を表す数値を指定します。戻り値として対応する曜日名の文字列を取得します。デフォルトの週の最初の曜日が日曜日の場合、数値に対応する曜日名は次のようになっています。

定数説明
vbSunday1日曜日
vbMonday2月曜日
vbTuesday3火曜日
vbWednesday4水曜日
vbThursday5木曜日
vbFriday6金曜日
vbSaturday7土曜日

例えば引数が 2 または vbMondayだった場合、 WeekdayName 関数は "火曜日" を返します。

曜日を表す数値は日付のデータから Weekday 関数を使うことで取得することができます。(詳しくは「Weekday関数:日付の値から曜日を取得する」を参照されてください)。

次の例を見てください。

Debug.Print WeekdayName(Weekday("2013/08/16"))  '金曜日
Debug.Print WeekdayName(Weekday("1998/12/5"))   '土曜日

Weekday 関数を使って引数に指定した日付の曜日を表す数値は 6 と 7 を取得することができるので、今度は WeekdayName 関数を使って、その曜日を表す数値に対する曜日名として "金曜日" と "土曜日" をそれぞれ取得してイミディエイトウィンドウに表示します。

曜日名を省略系で取得する

省略可能な 2 番目の引数に「True」を設定すると、取得する曜日名が "日" "月" など省略系となります。デフォルトの値である「False」を設定した場合は、取得する曜日名は "日曜日" "月曜日" などになります。

次の例を見てください。

Debug.Print WeekdayName(Weekday("2013/08/16"), True)  '金
Debug.Print WeekdayName(Weekday("1998/12/5"), True)   '土

WeekdayName 関数の 2 番目の引数に「True」を設定しているので、取得する曜日が省略系となっています。

週の最初の曜日を設定する

なお省略可能な 3 番目の引数で週の最初の曜日を設定することができます。設定する値は次のいずれかです。

定数説明
vbUseSystem0NLS API 設定を使用します
vbSunday1日曜日
vbMonday2月曜日
vbTuesday3火曜日
vbWednesday4水曜日
vbThursday5木曜日
vbFriday6金曜日
vbSaturday7土曜日

デフォルトの値は日曜日です。これは日曜日が 1 で土曜日が 7 で終わるように曜日の数値が設定されている場合です。例えば月曜日が 1 で 日曜日が 7 で終わるような形で曜日の数値が割り当てられているような環境で WeekdayName 関数を使用したい場合は、 3 番目の引数に 2 または vbMonday を指定してください。

次の例を見てください。

Debug.Print WeekdayName(Weekday("2013/08/16"))  '金曜日
Debug.Print WeekdayName(Weekday("2013/08/16", vbMonday), False, vbMonday) '金曜日

最初のサンプルは週の開始を日曜日として曜日に対する数値を取得し、その数値から週の開始を日曜日として曜日名を取得しています。次のサンプルは週の開始を月曜日として曜日に対するする値を取得し、その数値から週の開始を月曜日として曜日名を取得しています。結果として同じ日付からは同じ曜日名が取得できます。

曜日の数値がどのように割り当てられているかにあわせて、必要であれば設定を行ってください。

サンプルコード

それでは簡単なサンプルを作成して試してみます。

Option Explicit

Sub WeekdayName関数()
    Dim i As Integer

    For i = 3 To 6
        Cells(i, 3).Value = Weekday(Cells(i, 2).Value)
        Cells(i, 4).Value = WeekdayName(Weekday(Cells(i, 2).Value))
    Next i
End Sub

WeekdayName関数の定義と使い方(1)

このプログラムを実行すると Weekday 関数を使って B3 セルから B6 セルに入力された日付に関する値から曜日を表す数値を取得し C3 セルから C6 セルに代入します。また WeekdayName 関数を使って曜日を表す数値から曜日の曜日名を取得し D3 セルから D6 セルに代入します。

WeekdayName関数の定義と使い方(2)

-- --

Excel VBA における WeekdayName 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。