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

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

https://msdn.microsoft.com/ja-jp/vba/language-reference-vba/articles/weekday-function

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

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を日付として認識できるか確認しています。

https://msdn.microsoft.com/ja-jp/vba/language-reference-vba/articles/isdate-function

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

Licensed under CC BY-NC-SA 4.0
最終更新 2018年7月12日 11:55
Hugo で構築されています。
テーマ StackJimmy によって設計されています。