VBA DateSerial 関数:年月日から日付を取得する

はじめに

Excel VBA マクロの DateSerial 関数から年月日から日付を取得する方法を紹介します。

DateSerial 関数は、年月日の各値から日付を返します。

DateSerial(2000, 1, 2) のようにして、2000/01/02 の日付を取得できます。

年月日に分かれた値から日付を取得したいときに使用します。

時分秒から時間を取得するには「TimeSerial 関数」を使用します。
数値を日付に変換するには「数値を変換する」をご覧ください。
  • 目次
    • DateSerial 関数
    • 解説
    • 使用例

DateSerial 関数

DateSerial(, , )
指定したの日付を取得します。

引数「年」年の値を指定します。
引数「月」月の値を指定します。
引数「日」日の値を指定します。
戻り値の型日付型 (Date)

解説

引数「年」が 2 桁なら 0 ~ 492000 ~ 2049 年50 ~ 991950 ~ 1999 年 になります。Windows のバージョンによって変わります。

引数「月」には 1 ~ 12 の他に 0 以下や 13 以上も指定できます。 13 なら翌年の 1 月になります。

引数「日」には 1 ~ 31 の他に 0 以下や 32 以上も指定できます。1 月の 32 なら翌月の 1 日になります。

日付型の範囲は 西暦100年1月1日 ~ 西暦9999年12月31日 です。これを超えるときは「エラー 5 プロシージャの呼び出し、または引数が不正です。」が発生します。

使用例

年月日から日付を取得する。

Dim d As Date

d = DateSerial(2000, 1, 2)
Debug.Print(d) ' 2000/01/02

d = DateSerial(0, 3, 4)
Debug.Print(d) ' 2000/03/04

d = DateSerial(99, 1, 1)
Debug.Print(d) ' 1999/01/01

d = DateSerial(2000, 0, 1)  ' 月が 0
Debug.Print(d) ' 1999/12/01

d = DateSerial(2000, 13, 1) ' 月が 13
Debug.Print(d) ' 2001/01/01

d = DateSerial(2000, 1, -1) ' 日が -1
Debug.Print(d) ' 1999/12/30

d = DateSerial(2000, 1, 33) ' 日が 33
Debug.Print(d) ' 2000/02/02

年月日を取得

Year 関数Month 関数Day 関数」を使用して、年月日を取得できます。

DimAs Integer
DimAs Integer
DimAs Integer
年 = Year(Now)  ' 年
月 = Month(Now) ' 月
日 = Day(Now)   ' 日

Dim d As Date
d = DateSerial(年, 月, 日)
Debug.Print(d) ' 今日の日付