VBAで日付の曜日を取得する

概要

VBAで日付から曜日を取得するにはWeekday関数を使用します。
Weekday関数

コードは以下になります。

 1Option Explicit
 2Function getWeekDay(d As String) As String
 3'###################################################################################
 4'日付の曜日を表示します
 5'-----------------------------------------------------------------------------------
 6'引数  :d 文字列の日付
 7'###################################################################################
 8
 9  If IsDate(d) Then
10    Select Case Weekday(d)
11      Case vbSunday
12        getWeekDay = "日曜日"
13      Case vbMonday
14        getWeekDay = "月曜日"
15      Case vbTuesday
16        getWeekDay = "火曜日"
17      Case vbWednesday
18        getWeekDay = "水曜日"
19      Case vbThursday
20        getWeekDay = "木曜日"
21      Case vbFriday
22        getWeekDay = "金曜日"
23      Case vbSaturday
24        getWeekDay = "土曜日"
25    End Select
26  End If
27
28End Function
29
30Sub test_getWeekDay()
31
32  MsgBox getWeekDay("2018/7/1")
33  MsgBox getWeekDay("2018/7/12")
34  MsgBox getWeekDay(123456)
35  MsgBox getWeekDay("あ")
36
37End Sub

Weekday関数を使用する前に、IsDate関数を使用して
引数dを日付として認識できるか確認しています。
IsDate関数

日付として認識できないときは、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(“あ”) → 日付として認識できない

関連ページ