VBAで日付を扱っていると、次のようなことはありませんか?
- 曜日を「月曜日」「火曜日」のように表示したい
- 帳票や勤務表に曜日を表示したい
- 曜日判定結果を分かりやすく表示したい
このような場合は、WeekdayName関数を使うことで解決できます。
曜日番号から曜日名を取得できる便利な関数です。
この記事では、WeekdayName関数の基本から実務での活用方法まで分かりやすく解説します。
この記事でできること
- 曜日名を取得できる
- 日付から曜日を表示できる
- 帳票やスケジュール表に活用できる
WeekdayName関数とは?
WeekdayName関数は、曜日番号(1~7)を曜日名へ変換する関数です。
例えば、
1 → 日曜日
2 → 月曜日
3 → 火曜日
のように変換できます。
基本:WeekdayName関数の使い方
基本構文はこちらです。
WeekdayName(曜日番号)
基本例
MsgBox WeekdayName(2)
→ 月曜日
今日の曜日を表示する
Weekday関数と組み合わせるのが一般的です。
MsgBox WeekdayName(Weekday(Date))
→ 今日の曜日
セルの日付から曜日を取得する
Dim youbi As String
youbi = WeekdayName(Weekday(Range("A1").Value))
MsgBox youbi
曜日をセルへ表示する
Range("B1").Value = WeekdayName(Weekday(Range("A1").Value))
A1の日付から曜日を取得し、B1へ表示します。
曜日を短縮表示する
第2引数に True を指定します。
MsgBox WeekdayName(2, True)
→ 月
曜日開始を月曜日にする
第3引数で開始曜日を指定できます。
MsgBox WeekdayName(1, False, vbMonday)
→ 月曜日
構文(完全版)
WeekdayName(曜日番号, [省略形], [開始曜日])
| 引数 | 内容 |
|---|---|
| 曜日番号 | 1~7 |
| 省略形 | True:短縮表示 |
| 開始曜日 | 週の開始曜日 |
勤務表作成で使う
Dim dt As Date
dt = Date
Range("A1").Value = dt
Range("B1").Value = WeekdayName(Weekday(dt))
日付と曜日を同時に表示できます。
曜日ごとの色分けに使う
If Weekday(Date) = vbSunday Then
Range("A1").Interior.Color = RGB(255, 200, 200)
End If
Weekday関数との違い
| 関数 | 戻り値 |
|---|---|
| Weekday | 曜日番号 |
| WeekdayName | 曜日名 |
Weekday
MsgBox Weekday(Date)
→ 1~7
WeekdayName
MsgBox WeekdayName(Weekday(Date))
→ 日曜日~土曜日
実務での活用例
- 勤務表作成
- 営業日管理
- スケジュール表作成
- 帳票出力
日付処理では非常によく利用されます。
注意点
① 日付を直接渡せない
曜日番号が必要です。
WeekdayName(Weekday(Date))
② 開始曜日設定に注意
第3引数によって結果が変わります。
③ 表示名は環境依存の場合がある
Windowsの地域設定に影響されることがあります。
安全な書き方(おすすめ)
Dim dt As Variant
dt = Range("A1").Value
If IsDate(dt) Then
MsgBox WeekdayName(Weekday(dt))
Else
MsgBox "日付ではありません"
End If
よくあるエラーと対処法
① 型が一致しません
日付ではなく曜日番号を渡しているか確認してください。
② 曜日が違う
開始曜日設定を確認してください。
③ 短縮表示にならない
第2引数にTrueを指定してください。
④ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- WeekdayNameは曜日名を取得する関数
- Weekday関数と組み合わせて使う
- 短縮表示にも対応している
- 勤務表や帳票作成で活躍する
WeekdayName関数を使いこなせるようになると、日付データをより見やすく表示できるようになります。
実務でも利用頻度が高いため、ぜひマスターしておきましょう。

コメント