[ VBA ] 曜日を表す文字列を取得する ( Weekday / WeekdayName関数 )

Pocket

VBA では、Weekday 関数で曜日を取得し WeekdayName 関数を使用して曜日を表す文字列を取得することができます。端的に言うと日曜日から土曜日までの文字列のことです。

スポンサーリンク

Weekday, WeekdayName 関数の使用例

Weekday と WeekdayName 関数の使用例になります。WeerkdayName 関数は第2パラメータに True を与えることで、省略した文字列で取得できます。第3パラメータに Enum VbDayOfWeek 列挙体の値 vbMonday などを指定して、週初めの曜日をデフォルトの日曜日からその他の曜日に変更することもできます。

    Debug.Print WeekdayName(1) ' 日曜日
    Debug.Print WeekdayName(2) ' 月曜日
    Debug.Print WeekdayName(3) ' 火曜日
    Debug.Print WeekdayName(4) ' 水曜日
    Debug.Print WeekdayName(5) ' 木曜日
    Debug.Print WeekdayName(6) ' 金曜日
    Debug.Print WeekdayName(7) ' 土曜日

    Debug.Print WeekdayName(1, True) ' 日
    Debug.Print WeekdayName(2, True) ' 月
    Debug.Print WeekdayName(3, True) ' 火
    Debug.Print WeekdayName(4, True) ' 水
    Debug.Print WeekdayName(5, True) ' 木
    Debug.Print WeekdayName(6, True) ' 金
    Debug.Print WeekdayName(7, True) ' 土

    ' ちょっと具体的なサンプルスクリプト
    Dim d As Date
    d = "2015/01/13"
    
    ' 正しい日付であるか確認
    If IsDate(d) Then
    
        ’日付から曜日を数値で取得する
        Dim wd As VbDayOfWeek
        wd = Weekday(d)
        
        ’数値から対応する曜日を名前で取得する
        Debug.Print WeekdayName(wd)       ' 月曜日
        Debug.Print WeekdayName(wd, True) ' 月

    End If

Weekday 関数の戻り値は VbDayOfWeek 列挙型で以下の値を返します。

VbDayOfWeek列挙型内容
vbSunday1日曜日
vbMonday2月曜日
vbTuesday3火曜日
vbWednesday4水曜日
vbThursday5木曜日
vbFriday6金曜日
vbSaturday7土曜日

残念な MonthName 関数

月を表す文字列も取得することもできます。英語であれば April などです。では日本語であれば、如月や弥生といった文字列が取得できるのかと言うと残念ながらそうではないようです。本関数が積極的に使用されることはおそらくないでしょう。

    Debug.Print MonthName(1) ' 1月
    Debug.Print MonthName(2) ' 2月
    Debug.Print MonthName(3) ' 3月
    Debug.Print MonthName(4) ' 4月
    Debug.Print MonthName(5) ' 5月
    Debug.Print MonthName(6) ' 6月
    Debug.Print MonthName(7) ' 7月
    Debug.Print MonthName(8) ' 8月
    Debug.Print MonthName(9, True)  '  9  省略系は数字のみ
    Debug.Print MonthName(10, True) ' 10
    Debug.Print MonthName(11, True) ' 11
    Debug.Print MonthName(12, True) ' 12

参考
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *