概要

Weekday関数は、Excel VBAで指定した日付の曜日を表す整数値を返す関数です。例えば、月曜日なら1、火曜日なら2というように、曜日を数値として取得できます。さらに、Weekday関数はオプションで週の開始日を指定できるため、週の始まりを任意に設定することが可能です。日付の解析や曜日による条件分岐を行いたいときに非常に便利です。

構文

Weekday(日付, [週の開始日])

パラメータ

  • 日付

    曜日を取得したい日付を指定します。このパラメータには日付型または日付に変換可能な値を指定します。

  • 週の開始日(省略可能)

    週のどの曜日を1として扱うかを指定します。省略した場合、デフォルトでは日曜日を1とします。以下の定数が使用可能です:

    • vbUseSystemDayOfWeek (0) - システムの設定に従う
    • vbSunday (1) - 日曜日(デフォルト)
    • vbMonday (2) - 月曜日
    • vbTuesday (3) - 火曜日
    • vbWednesday (4) - 水曜日
    • vbThursday (5) - 木曜日
    • vbFriday (6) - 金曜日
    • vbSaturday (7) - 土曜日

戻り値

指定した日付の曜日を整数値で返します。開始日によって返される値が変わります。

使用例

基本的な使用例 - 日曜日を週の開始日とする

Sub ExampleWeekday()
    Dim dt As Date

    dt = #9/23/2024#  ' 2024年9月23日(月曜日)

    MsgBox Weekday(dt)  ' 結果: 2 (月曜日)
End Sub

この例では、2024年9月23日の曜日を取得し、2(月曜日)が返されます。デフォルトでは日曜日を週の開始日として扱うため、この結果になります。

週の開始日を月曜日に設定する

Sub WeekdayWithMondayStart()
    Dim dt As Date

    dt = #9/23/2024#  ' 2024年9月23日(月曜日)
    MsgBox Weekday(dt, vbMonday)  ' 結果: 1 (月曜日)
End Sub

この例では、週の開始日を月曜日に設定しています。そのため、2024年9月23日(月曜日)は1として返されます。

曜日に応じた条件分岐

Sub ActionBasedOnWeekday()
    Dim dt As Date

    dt = Date  ' 今日の日付を取得

    Select Case Weekday(dt, vbMonday)
        Case 1
            MsgBox "今日は月曜日です。"
        Case 2
            MsgBox "今日は火曜日です。"
        Case Else
            MsgBox "平日です。"
    End Select
End Sub

この例では、現在の日付の曜日を判別し、曜日に応じたメッセージを表示しています。週の開始日をvbMondayに設定しているため、曜日ごとの条件分岐が可能です。

使用場面と注意点

  • 日付解析

    日付データから曜日を取り出して分析する際に役立ちます。例えば、売上データの曜日別分析などで使用可能です。

  • スケジュール管理

    曜日に応じたタスクや予定を自動化する際に、曜日情報を取得することで効率的な処理が行えます。

  • 注意点

    週の開始日を正しく指定しないと、意図した曜日の数値が返されない場合があります。開始日を適切に設定することが重要です。

応用例 - 週末かどうかを判定

Sub CheckIfWeekend()
    Dim dt As Date

    dt = #9/24/2024#  ' 2024年9月24日(火曜日)

    If Weekday(dt, vbMonday) >= 6 Then
        MsgBox "週末です。"
    Else
        MsgBox "平日です。"
    End If
End Sub

この例では、指定した日付が週末かどうかを判定しています。vbMondayを使用して週の開始日を月曜日とし、土曜日(6)以降を週末としています。

まとめ

Weekday関数は、日付から曜日を簡単に取得できる非常に便利な関数です。デフォルトの設定だけでなく、週の開始日を任意に設定できるため、柔軟な曜日判定が可能です。スケジュール管理やデータ分析において、曜日による処理の分岐が必要な場面で活躍します。