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

Excel VBA DatePart関数 日付の時間間隔を返す

Excel VBA DatePart関数 日付の時間間隔を返します

Excel VBAの「DatePart 関数」について解説します。

スポンサーリンク

DatePart 関数とは

Excel VBA の DatePart 関数は、指定した日付を評価し、その日付が含まれる指定した時間間隔の値を返します。

たとえば、指定した日付の曜日または現在の時間を計算したり、日付が年の何週目なのか、何四半期なのかなどを取得することができます。

DatePart 関数の構文や引数の設定や実際の使い方について解説していきたいと思います。

DatePart 関数(Visual Basic for Applications リファレンス)

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

DatePart(interval, date[, firstdayofweek[, firstweekofyear]])

引数

引数 説明
interval【必須】間隔単位の設定値(文字列)を指定します
※ 指定できる間隔設定値は下表を参照ください
date【必須】評価する日付を指定します
※ データ型は Variant (Date) です
firstdayofweek【省略可能】週の開始曜日を定数(値)で指定します
※ 省略時の規定は、日曜日です
firstweekofyear【省略可能】年度の第1週を定数(値)で指定します
※ 省略時の規定は、1月1日を含む週です

引数 interval に指定できる間隔設定値

interval の設定値で、同じ結果を得られる関数を3列目に記載しています。

設定値(文字列)内容代替できる関数
yyyyYear関数
q四半期
mMonth関数
dDay関数
y年間の通算日
ww年間の通算週
w週の通算日
hHour関数
nMinute関数
sSecond関数

引数 firstdayofweek に指定できる設定値

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

引数 firstweekofyear に設定できる設定値

定数年度の第1週とする内容
vbUseSystem0各国語サポート(NLS)API設定を使用
vbFirstJan111月1日を含む週(既定値)
vbFirstFourDays27日のう4日~6日が新年度に含まれる週
vbFirstFullWeek3週全体が新年度に含まれる最初の週

戻り値

戻り値説明
間隔を示す数値戻り値の数値型は Long です

解説(使用例)

それでは、引数 Date にコード実行時の Date値 を Now 関数で取得し、各 interval の指定で取得できる値を見てみましょう。

DatePart 関数の動作を確認するサンプルコード

'■DatePart関数の動作確認サンプル
Sub DatePart_Sample01()
  Dim dt As Date
  'コード実行時点のDate値を取得
  dt = Now
'▼Nowの値を表示する
  Debug.Print "[Now]" & dt
'▼各intervalのDatePart値
  Debug.Print DatePart("yyyy", dt) & "年"
  Debug.Print DatePart("q", dt) & "四半期"
  Debug.Print DatePart("m", dt) & "月"
  Debug.Print DatePart("d", dt) & "日"
  Debug.Print DatePart("y", dt) & "日(年間通算)"
  Debug.Print DatePart("ww", dt) & "週(年間通算)"
  Debug.Print DatePart("w", dt) & "日(週の通日)"
  Debug.Print DatePart("h", dt) & "時"
  Debug.Print DatePart("n", dt) & "分"
  Debug.Print DatePart("s", dt) & "秒"
End Sub

実行結果の イミディエイト 画像がこちらです。

DatePart_Smple01 実行結果イミディエイト画像

・5行目、変数 dtNow 関数で現在日時を取得して値を代入しています。
・7行目、変数 dt の値をイミディエイトに表示させています。

▼各 Interval 毎に取得できる DatePart 値を取得して結果を表示させます。
・9~18行目で、それぞれの Interval で取得できた値をイミディエイトに表示させています。
※ コードの実行結果は、この上に表示しているイミディエイトの画像でご確認ください。

Interval が、”q” , “y” , “ww” , “w” については、引数 Date の時間間隔(年や週の位置など)を取得して返します。

他の関数で代替できる、”yyyy” や “m” などの Interval 設定は、単純に Date の該当部分を切り出して値を表示するだけです。代替できるYear関数やMonth関数の方が引数も単純で簡単ですね。

日付が年の何週目なのかを表示するサンプル

では、コード実行時の日付が、年の何週目なのか、週の何日目なのかを取得し表示してみましょう。

'■今日が年の何週目で週の何日目かを表示する
Sub DatePart_Sample02()
  Dim dt As Date
  Dim nw As Long, mw As Long
  'コード実行時点のDate値を取得
  dt = Date
  nw = DatePart("ww", dt) '年の何週目か取得
  mw = DatePart("w", dt)  '週の何日目か取得
  MsgBox "今日" & dt & "は、" & vbCrLf & _
    "年の第" & nw & "週目、" & vbCrLf & _
    "週の" & mw & "日目です"
End Sub

表示された MsgBox の画像がこちらです。

DatePart_Smple02 実行結果で表示された MsgBox画像

・6行目、変数 dtDate 関数で実行現在の日付を取得して値を代入しています。
・7行目、変数 nwinterval に “ww” 指定で日付が年の何週目なのかを取得して代入しています。
・8行目、変数 mwinterval に “w” 指定で日付が週の何日目なのかを取得して代入しています。
・9行目で、上の画像のとおり MsgBox に結果を表示させています。

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

Date 関数のほか「日付・時刻」の関数について解説している過去記事があります。下記のリンクからジャンプしてご覧いただければ幸いです。

おわりに

Excel VBA DatePart 関数は、指定した日付を評価して、その日付が含まれる指定した時間間隔の値を返します。

Interval の指定が、”q” , “y” , “ww” , “w” については、引数 Date の時間間隔(年や週の位置)を取得して返します。

一方、Interval の指定が、”yyyy” や “m” など、他の関数で代替できるものは、単純に Date の指定部分を表示するだけです。なので、DatePart 関数で取得するケースはあまり無いかもしれませんね。

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

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

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

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

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

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