#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'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします


Copyright © T'sWare All rights reserved