VBAで日付を扱っていると、次のようなことはありませんか?
- 日付から曜日を取得したい
- 土日を判定したい
- 曜日ごとに処理を分けたい
このような場合は、Weekday関数を使うことで解決できます。
指定した日付の曜日を数値で取得できる便利な関数です。
この記事では、Weekday関数の基本から実務での活用方法まで分かりやすく解説します。
この記事でできること
- 曜日を取得できる
- 土日判定ができる
- 曜日別の処理ができる
Weekday関数とは?
Weekday関数は、日付から曜日を数値で取得する関数です。
デフォルトでは次の値が返されます。
| 戻り値 | 曜日 |
|---|---|
| 1 | 日曜日 |
| 2 | 月曜日 |
| 3 | 火曜日 |
| 4 | 水曜日 |
| 5 | 木曜日 |
| 6 | 金曜日 |
| 7 | 土曜日 |
基本:Weekday関数の使い方
基本構文はこちらです。
Weekday(日付)
基本例
MsgBox Weekday("2025/01/01")
→ 4(水曜日)
今日の曜日を取得する
MsgBox Weekday(Date)
今日の曜日番号を取得できます。
セルの日付から曜日を取得する
Dim wk As Integer
wk = Weekday(Range("A1").Value)
MsgBox wk
曜日名を表示する
WeekdayName関数と組み合わせます。
MsgBox WeekdayName(Weekday(Date))
→ 月曜日 など
土日判定を行う
Dim wk As Integer
wk = Weekday(Date)
If wk = vbSaturday Or wk = vbSunday Then
MsgBox "休日です"
End If
平日のみ処理する
Dim wk As Integer
wk = Weekday(Date)
If wk >= vbMonday And wk <= vbFriday Then
MsgBox "平日です"
End If
開始曜日を変更する
第2引数で週の開始曜日を指定できます。
Weekday(Date, vbMonday)
この場合は月曜日が1になります。
曜日開始設定一覧
| 定数 | 開始曜日 |
|---|---|
| vbSunday | 日曜日 |
| vbMonday | 月曜日 |
| vbTuesday | 火曜日 |
| vbWednesday | 水曜日 |
| vbThursday | 木曜日 |
| vbFriday | 金曜日 |
| vbSaturday | 土曜日 |
曜日ごとに処理を分ける
Select Case Weekday(Date)
Case vbSunday
MsgBox "日曜日"
Case vbMonday
MsgBox "月曜日"
Case vbTuesday
MsgBox "火曜日"
End Select
実務での活用例
- 営業日判定
- 休日処理
- 勤務表作成
- スケジュール管理
日付処理では非常によく使われる関数です。
注意点
① 戻り値は曜日名ではない
数値が返されます。
MsgBox Weekday(Date)
→ 1~7
② 日付型である必要がある
無効な日付はエラーになります。
③ 開始曜日に注意
第2引数によって結果が変わります。
安全な書き方(おすすめ)
Dim dt As Variant
dt = Range("A1").Value
If IsDate(dt) Then
MsgBox Weekday(dt)
Else
MsgBox "日付ではありません"
End If
よくあるエラーと対処法
① 型が一致しません
日付として認識できない値の可能性があります。
② 曜日が合わない
開始曜日の設定を確認してください。
③ 曜日名が欲しい
WeekdayName関数を使用してください。
④ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- Weekdayは曜日を数値で取得する関数
- 土日判定や営業日判定で活躍
- WeekdayNameと組み合わせると便利
- 日付処理では頻出の関数
Weekday関数を使いこなせるようになると、曜日に応じた処理を簡単に作成できるようになります。
実務でも使用頻度が高い関数なので、ぜひマスターしておきましょう。

コメント