Excel VBAの「Weekday 関数」について解説します。
Weekday 関数とは
Excel VBA の Weekday 関数は、指定された日付の曜日を表す整数 Variant (Integer) を返します。
では、Weekday 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。
Weekday 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
Weekday(date[, firstdayweek])
引数
引数 | 説明 |
---|---|
date | 【必須】評価する日付を指定します ※ データ型は Variant (Date) です |
firstdayweek | 【省略可能】週の開始曜日を定数(値)で指定します ※ 省略時の規定は、日曜日です |
引数 firstdayofweek に指定できる定数(値)
定数 | 値 | 内容 |
---|---|---|
vbUseSystem | 0 | 各国語サポート(NLS)API設定を使用 |
vbSunday | 1 | 日曜(既定値) |
vbMonday | 2 | 月曜 |
vbTuesday | 3 | 火曜 |
vbWednesday | 4 | 水曜 |
vbThursday | 5 | 木曜 |
vbFriday | 6 | 金曜 |
vbSaturday | 7 | 土曜 |
戻り値
戻り値 | 説明 |
---|---|
曜日を表す整数値 | 対応する 1 から 7 までの整数値を返します |
省略可能な引数 firstdayofweek に指定がある場合は、指定された曜日が起点の「1」となります。
↓定数(or値) / 戻り値→ | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
vbSunday(1) 【既定】 | 日曜 | 月曜 | 火曜 | 水曜 | 木曜 | 金曜 | 土曜 |
vbMonday(2) | 月曜 | 火曜 | 水曜 | 木曜 | 金曜 | 土曜 | 日曜 |
vbTuesday(3) | 火曜 | 水曜 | 木曜 | 金曜 | 土曜 | 日曜 | 月曜 |
vbWednesday(4) | 水曜 | 木曜 | 金曜 | 土曜 | 日曜 | 月曜 | 火曜 |
VbThursday(5) | 木曜 | 金曜 | 土曜 | 日曜 | 月曜 | 火曜 | 水曜 |
VbFriday(6) | 金曜 | 土曜 | 日曜 | 月曜 | 火曜 | 水曜 | 木曜 |
VbSaturday(7) | 土曜 | 日曜 | 月曜 | 火曜 | 水曜 | 木曜 | 金曜 |
解説(使用例)
Weekday 関数のサンプルコードを使って解説します。
Weekday 関数の引数と戻り値を確認するサンプル
Weekday 関数の引数と戻り値を MagBox で表示して確認するサンプルです。
※ エラー処理等は省略していますのでご了承ください。
'■Weekday関数サンプル
Sub Weekday_Sample()
'必要な変数を宣言
Dim s As Date '日付用
Dim i As Integer '週起点用
Dim id As Integer 'Weekday関数の結果用
Dim wdName As Variant '週の曜日配列用
'InputBoxで入力する
s = InputBox("日付を入力してください(yyyy/mm/dd)")
i = InputBox("曜日の起点を1-7の数字で入力してください" & _
vbCrLf & "日=1,月=2,火=3,水=4,木=5,金=6,土=7")
'firstdayofweek(週起点)毎の曜日を配列にセット
Select Case i
Case vbSunday
wdName = Array("日", "月", "火", "水", "木", "金", "土")
Case vbMonday
wdName = Array("月", "火", "水", "木", "金", "土", "日")
Case vbTuesday
wdName = Array("火", "水", "木", "金", "土", "日", "月")
Case vbWednesday
wdName = Array("水", "木", "金", "土", "日", "月", "火")
Case vbThursday
wdName = Array("木", "金", "土", "日", "月", "火", "水")
Case vbFriday
wdName = Array("金", "土", "日", "月", "火", "水", "木")
Case vbSaturday
wdName = Array("土", "日", "月", "火", "水", "木", "金")
End Select
'Weekday番号を変数に入力
id = Weekday(s, i)
'MsgBoxで結果を表示する
MsgBox "Weekday(" & s & ", " & i & ") = " & id & vbCrLf & _
"は、「" & wdName(id - 1) & "曜日」です"
End Sub
引数 firstdayofweek に指定があった場合、Weekday 関数が返す曜日を表す整数が変動します。
13~28行目のコードで firstdayofweek の指定別に曜日の配列をセットしています。
33行目の wdName(id – 1) で、配列から該当する曜日を抽出して表示するようにしています。
実行結果の画像を順番に表示していきます。
では、来年の元旦の曜日を取得したいと思います。
引数 firstdayofweek には既定の「1」を指定しました。
結果は MsgBox で次のように表示されます。日曜開始の「4」番目は「水曜日」です。
では次に、引数 firstdayofweek には既定の「3」を指定してみます。
結果は次のとおり、火曜開始なので Weekday が「7」は「月曜日」になります。
日付・時刻関数の使用例について
Date 関数のほか「日付・時刻」の関数について解説しているこちらの記事もご覧いただければ幸いです。
Timer など覚えておきたい日付時刻の処理について、より詳しい解説記事がこちらです。サンプルコードも複数掲載していますので是非ご覧ください。
おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA Weekday 関数は、指定された日付の曜日を表す整数 Variant (Integer) を返します。
返される整数は 1 ~ 7 の範囲の数値です。
あまり指定することはないように思いますが、週の開始曜日を既定の「日曜日」以外に指定すると、対応する曜日を「曜日文字列」に変換するには注意が必要です。サンプルでは、それに対応する一例を示せたのではないでしょうか。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;