教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】WeekdayName関数の使い方を教えて!

構文

構文は以下の通りです。

WeekdayName(曜日, [曜日名の省略], [週の開始曜日])

解説

WeekdayName関数は、曜日の名前を返す関数です。

引数 指定 内容
曜日 必須 Weekday関数で取得した値を指定します。
曜日名の省略 省略可 曜日名を省略するか否かを指定します。Trueを指定すると曜日名を省略し、Falseを指定すると曜日名を省略しません。既定値はFalseです。
週の開始曜日 省略可 週の最初の曜日を何曜日にするか指定します。既定値は日曜日です。設定値を以下で紹介します。

週の開始曜日には以下の設定値が指定できます。

定数 内容
vbSunday 1 日曜日(既定値)
vbMonday 2 月曜日
vbTuesday 3 火曜日
vbWednesday 4 水曜日
vbThursday 5 木曜日
vbFriday 6 金曜日
vbSaturday 7 土曜日

使用例

WeekdayName(Weekday("2017/1/1"))
WeekdayName(Weekday("2017/1/1"), False)
WeekdayName(Weekday("2017/1/1"), True)
WeekdayName(Weekday("2017/1/1"), False, vbSunday)
WeekdayName(Weekday("2017/1/1"), False, 2)

使い方

具体的な使い方を紹介します。

(例1)曜日名の取得

小学校の授業で、曜日を使った計画をたてる場面が多いですよね。例えば、月曜日は算数、火曜日は国語といったように。WeekdayNameを使って、簡単に曜日名を取得できます。

Sub 曜日の取得()
    Dim today As Integer
    today = Weekday(Date) ' 今日の曜日を取得
    Dim todayName As String
    todayName = WeekdayName(today, True) ' 今日の短縮曜日名を取得
    MsgBox "今日は" & todayName & "曜日です。"
End Sub

(例2)曜日の取得(短縮なし)

短縮された曜日名ではなく、通常の曜日名を取得する場合は、abbreviate引数を省略するかFalseにします。

Sub 曜日の取得_短縮なし()
    Dim today As Integer
    today = Weekday(Date) ' 今日の曜日を取得
    Dim todayName As String
    todayName = WeekdayName(today, False) ' 今日の通常の曜日名を取得
    MsgBox "今日は" & todayName & "曜日です。"
End Sub

プログラミング例

以下に、プログラミング例を紹介します。

Sub GreetByDay()
    Dim dayNumber As Integer
    Dim dayName As String
    ' 現在の曜日を取得
    dayNumber = Weekday(Now)
    dayName = WeekdayName(dayNumber, True)
    ' 曜日に応じて異なるメッセージを表示
    Select Case dayNumber
        Case 1
            MsgBox "今日は" & dayName & "。頑張りましょう!"
        Case 5
            MsgBox "もうすぐ週末の" & dayName & "!"
        Case Else
            MsgBox "今日は" & dayName & "です。"
    End Select
End Sub

このプログラムは、実行されると現在の曜日に合わせたメッセージを表示します。

まとめ

WeekdayName関数は、曜日の名前を返す関数です。是非活用してください。