VBAで日付から曜日を取得するにはWeekday関数
を使用します。
Weekday 関数 (Visual Basic for Applications) | Microsoft Learn
コードは以下になります。
Option Explicit
Function getWeekDay(d As String) As String
'###################################################################################
'日付の曜日を表示します
'-----------------------------------------------------------------------------------
'引数 :d 文字列の日付
'###################################################################################
If IsDate(d) Then
Select Case Weekday(d)
Case vbSunday
getWeekDay = "日曜日"
Case vbMonday
getWeekDay = "月曜日"
Case vbTuesday
getWeekDay = "火曜日"
Case vbWednesday
getWeekDay = "水曜日"
Case vbThursday
getWeekDay = "木曜日"
Case vbFriday
getWeekDay = "金曜日"
Case vbSaturday
getWeekDay = "土曜日"
End Select
End If
End Function
Sub test_getWeekDay()
MsgBox getWeekDay("2018/7/1")
MsgBox getWeekDay("2018/7/12")
MsgBox getWeekDay(123456)
MsgBox getWeekDay("あ")
End Sub
Weekday関数
を使用する前に、IsDate関数
を使用して、引数dを日付として認識できるか確認しています。
IsDate 関数 (Visual Basic for Applications) | Microsoft Learn
日付として認識できないときは、Weekday
で処理を行いません。
引数dを日付として認識できるときは、Weekday
を使用します。
Weekday
に日付を渡すと以下の値が返されます。
定数 | 値 | 説明 |
---|---|---|
vbSunday | 1 | 日曜日 |
vbMonday | 2 | 月曜日 |
vbTuesday | 3 | 火曜日 |
vbWednesday | 4 | 水曜日 |
vbThursday | 5 | 木曜日 |
vbFriday | 6 | 金曜日 |
vbSaturday | 7 | 土曜日 |
返された数値をCase文で条件分岐し、処理しています。
getWeekDay(“2018/7/1”)→ 1 → 日曜日

getWeekDay(“2018/7/12”) → 5 → 木曜日

getWeekDay(123456) → 日付として認識できない
getWeekDay(“あ”) → 日付として認識できない