本ページには広告が含まれています。

ExcelVBA Weekday 関数 日付の曜日を整数値で返す

ExcelVBA Weekday 関数 日付の曜日を整数値で返す

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 に指定できる定数(値)

定数内容
vbUseSystem0各国語サポート(NLS)API設定を使用
vbSunday1日曜(既定値)
vbMonday2月曜
vbTuesday3火曜
vbWednesday4水曜
vbThursday5木曜
vbFriday6金曜
vbSaturday7土曜

戻り値

戻り値説明
曜日を表す整数値対応する 1 から 7 までの整数値を返します

省略可能な引数 firstdayofweek に指定がある場合は、指定された曜日が起点の「1」となります。

↓定数(or値) / 戻り値→1234567
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) で、配列から該当する曜日を抽出して表示するようにしています。

実行結果の画像を順番に表示していきます。
では、来年の元旦の曜日を取得したいと思います。

Weekday_Sample InputBox_01

引数 firstdayofweek には既定の「1」を指定しました。

Weekday_Sample InputBox_02

結果は MsgBox で次のように表示されます。日曜開始の「4」番目は「水曜日」です。

Weekday_Sample MsgBox_01

では次に、引数 firstdayofweek には既定の「3」を指定してみます。

Weekday_Sample InputBox_03

結果は次のとおり、火曜開始なので Weekday が「7」は「月曜日」になります。

Weekday_Sample MsgBox_02

日付・時刻関数の使用例について

Date 関数のほか「日付・時刻」の関数について解説しているこちらの記事もご覧いただければ幸いです。

Timer など覚えておきたい日付時刻の処理について、より詳しい解説記事がこちらです。サンプルコードも複数掲載していますので是非ご覧ください。

おわりに

Excel VBA Weekday 関数は、指定された日付の曜日を表す整数 Variant (Integer) を返します。

返される整数は 1 ~ 7 の範囲の数値です。

あまり指定することはないように思いますが、週の開始曜日を既定の「日曜日」以外に指定すると、対応する曜日を「曜日文字列」に変換するには注意が必要です。サンプルでは、それに対応する一例を示せたのではないでしょうか。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!