[VBA] WeekdayName, WeekDay関数で曜日を取得します

 VBA で曜日を取得する関数を解説しますよ~。

WeekdayName関数で曜日の文字列を得ます

 WeekdayName関数

WeekdayName(数値, [,曜日名の省略, [開始曜日]])

というように記述して対応する曜日の文字列を得ます。[開始曜日] と [数値] には VBA組込定数あるいはアラビア数字のどちらを入れてもかまいません(下の表を参照してください)。

組込定数 曜日
vbSunday 1 日曜日
vbMonday 2 月曜日
vbTuesday 3 火曜日
vbWednesday 4 水曜日
vbThursday 5 木曜日
vbFriday 6 金曜日
vbSaturday 7 土曜日

 2番目の引数 [曜日名の省略] というのは、たとえば「火曜日」の「曜日」という文字を省略するかどうかです。するなら True, しないなら False を入れます。この引数を省略すると False を指定したことになります。

 3番目の引数 [開始曜日] は基準となる曜日で、ここを 1 として各曜日に番号が振られます。この引数を省略するか 1 を入れると、 [数値] に対応する曜日はそれぞれ上の表にあるとおりになります。しかし [開始曜日] にたとえば vbTuesday または 3 を指定すると、

1:火 2:水 3:木 4:金 5:土 6:日 7:月

というように、戻り値がずれます。何がなんだかわかんなくなってしまっても大丈夫。よほど変わったことをしないかぎり、3つめの引数を指定する機会はないと思います。こばとも使ったことないし。何のためにあるのかすらよくわからないし。まあともかく実例を見てみましょー。

 Option Base 1

 '曜日一覧を出力します

 Sub WeekDayList()

 Dim i As Integer
 Dim wname(7) As String

 For i = 1 To 7

  wname(i) = WeekdayName(i)

  Debug.Print wname(i);

 Next i

 End Sub

 WeekdayName関数の最初の引数に 1 ~ 7 の数字を順に入れて戻り値を調べています。実行するとイミディエイトウィンドウに

日曜日 月曜日 火曜日 水曜日 木曜日 金曜日 土曜日

と表示されるはずです。
 

WeekDay関数で日付から曜日を取得します

 WeekdayName関数とよく似た関数に WeekDay関数 というものがあります(とっても紛らわしいので要注意です)。WeekDay関数は「日付から曜日に対応する数値を取得する関数」です。戻り値は Variant 型 (内部処理形式は Integer) です。引数は [日付] と [開始曜日] の2つです。

WeekDay(日付, [開始曜日])

 WeekdayName関数と同じく、2つめの引数で対応する曜日をずらしますけど、ほとんど使う機会はなさそうです。それでは簡単なマクロで動作を確認してみましょう。

 '今日の曜日を数値で表示します

 Sub WeekDateNumber()

 Dim wnumber As Integer

 wnumber = Weekday(Date)

 Debug.Print wnumber

 End Sub

 Date 関数で今日の日付を得て、そこから曜日を取得しています。これを実行すると、そのときの日付に応じて 1 ~ 7 の数値が出力されます。マクロの内部で処理するだけなら、これでもかまいませんが、「今日は何曜日」てことを出力するには数字では愛想がなさすぎます。実際的には下のマクロにあるように WeekdayName関数と組合わせて使用することが多くなると思います。

 '今日の曜日名を表示します

 Sub WeekDateName()

 Dim wname As String

 wname = WeekdayName(Weekday(Date))

 Debug.Print "今日は" & wname & "です"

 End Sub

 Date 関数で得た日付から曜日を数値で取得し、そこから WeekdayName関数で曜日名を得ています。マクロを実行すると、そのときの日付に応じて「日曜日」とか「金曜日」などが返ってくるはずです。次は明後日の曜日を返すマクロを作ってみましょう。

 '明後日(2日後)の曜日名を表示します

 Sub DayAfterTomorrow()

 Dim wname As String

 wname = WeekdayName(Weekday(Date + 2))

 Debug.Print "明後日は" & wname & "です"

 End Sub

 今日の日付 Date に 2 を加えて、明後日(2日後)の曜日を得ています。
 マクロを実行すると、そのときの日付に応じて

明後日は金曜日です

というようなメッセージが返ります。

スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)