Excel VBAで曜日を取得する:Weekday, WeekdayName

特定の日付の曜日を取得する場合、VBAでは日付関数 Weekday と、WeekdayNameを組み合わせて行ないます。

特定の日付の曜日を示す整数値を求めるWeekday関数

Weekday関数は、関数の構文は以下の通りです。

日付は調べたい日付(「2016/1/1」のような日付を示す文字列も可能)を記入します。「月の最初の曜日を示す値」は省略可能です。省略した場合、VBAではPCのOSのシステム時間がデフォルトとして設定されます。

マクロ例:

どちらのコードでも、「6」という結果になります。「6」は金曜日に対応しているので、カレンダーと同じ結果が得られました。

曜日を表すクラス名と整数値の対応は下記のとおりです。これ以外の値は、実行時エラーとなります。

・0:vbUseSystemDayOfWeek(PCのOSのシステム時間)
・1:vbSunday (日曜日)
・2:vbMonday (月曜日)
・3:vbTuesday (火曜日)
・4:vbWednesday (水曜日)
・5:vbThursday (木曜日)
・6:vbFriday (金曜日)
・7:vbSaturday (土曜日)

マクロ例:(実行結果が5と表示:木曜日で、カレンダーと一致しない:不正解)なお、Weekday関数の2つ目のパラメータを変更した場合は、求める整数値が本来の値と異なることもあります。

Weekday関数で求めた整数値を曜日名に変更するWeekdayName関数

上記Weekday関数だけでは曜日が分からないので、WeekdayName関数で曜日表示に直すことが可能です。

WeekdayName(Weekday関数で求めた整数値, 曜日を省略表示するかどうか, 週の第1日目の曜日を示す値またはクラス名)

1番目のパラメータには、0から7の数字か数式、Weekday関数で求めた数値またはクラス値のみ。
2番目のパラメータは、省略した場合はFalse(日曜日、月曜日、…)、Trueで省略された曜日表示(日、月、…)
3番目のパラメータは、Weekday関数と同じ内容で省略可能です。基本的には、Weekday関数と同じ設定にします。

マクロ例:


Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて