#404 DateSerial関数による日付の加減算 VBA

翌日の日付を求めたり、3ヶ月前の日付を求めたりといった日付の加減算を行いたい場合は、「DateAdd」関数を使います。しかし、年・月・日をそれぞれ別の引数として渡すことによってその日付を返す「DateSerial」関数に対して、引数自体に加減算を指定することによっても、日付の加減算を行うことができます。

たとえば、「DateSerial(2006, 7, 1)」の返り値は2006年7月1日ですが、「DateSerial(2006, 7, 1 + 1)」とすることによって、1日プラスされた2006年7月2日を返り値として得ることができます。さらに特徴的なこととして、「DateSerial(2006, 6, 30 + 1)」のように引数を指定した場合、6月31日はありませんので、自動的に月の繰上げが行われ、2006年7月1日が返されます

コード例:

  Dim dtmToday As Date

  dtmToday = #7/31/2006#

  '2006/7/31の翌日を出力(自動的に翌月になる)
  Debug.Print DateSerial(Year(dtmToday), Month(dtmToday), Day(dtmToday) + 1)

  '2006/7/31の5日後を出力(自動的に翌月になる)
  Debug.Print DateSerial(Year(dtmToday), Month(dtmToday), Day(dtmToday) + 5)

  '2006/7/31の50日後を出力(自動的に翌々月になる)
  Debug.Print DateSerial(Year(dtmToday), Month(dtmToday), Day(dtmToday) + 50)

  '2006/7/31の1ヶ月後を出力(自動的に翌月になる)
  Debug.Print DateSerial(Year(dtmToday), Month(dtmToday) + 1, Day(dtmToday))

  '2006/7/31の1ヶ月と1日後を出力(自動的に翌々月の1日になる)
  Debug.Print DateSerial(Year(dtmToday), Month(dtmToday) + 1, Day(dtmToday) + 1)

  '2006/7/31の8ヶ月後を出力(自動的に翌年になる)
  Debug.Print DateSerial(Year(dtmToday), Month(dtmToday) + 8, Day(dtmToday))

  '2006/7/31の40日前を出力(自動的に前月になる)
  Debug.Print DateSerial(Year(dtmToday), Month(dtmToday), Day(dtmToday) - 40)


実行結果:
実行結果のイミディエイトウィンドウ
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved