はじめに
DateSerial関数は、日付を生成する関数です。
DateSerial(2022,11,15) とすれば、2022/11/15 を取得でるような単純な関数ですが、
日付部分に 0 をセットすると、 1 の前という事で前月の最終日(月末)を指してくれるなど、少しトリッキーな使い方ができます。
今回は色々実験して挙動を確かめてみましょう。
構文
DateSerial(year, month, day)
DateSerial関数の引数は Integer 型ですので -32,768 から 32,767 を超えるとエラーになります。
引 数 | 内 容 |
---|---|
year | 年を指す 100 以上 9999 以下の数値か数式をセットします。 年を 2桁で表す場合、 0 から 29 までは、2000年~2029年。 30 から 99 までは、1930年から 1999年になります。 |
month | 月を指す、1~12 の数を指定します。 13 をセットすると翌月の1月、 0 をセットすると前年の12月となります。 |
day | 日を指す、1~31の数を指定します。 0 をセットすると前月の末日になります。 |
サンプルコード
DateSerial関数は、DateSerial(2022,2,31) など 2022/2/31 というありえない日付をセットしても、日付を繰り上げたり、繰り下げたりして日付を返してくれます。
DateSerial(2022, 2, 31) '2022/03/03
日付に 0 を指定すると、前月の末日を返してくれます。
DateSerial(2022, 1, 0) '2021/12/31
このように日付が1~31の範囲を超えた場合、月や年も連動して繰り下げや繰り上げを行って日付を返します。
月も同じく、1~12 の範囲を超えると年も連動します。(あふれた時には日付も連動します。)
DateSerial(2022, 14, 31) '2023/03/03
月末の日付を取得
DateSerial関数を使うと各月の月末を得る事ができます。
DateSerial(Year(Date), Month(Date) + 1, 0) '当月の末日
DateSerial(Year(Date), Month(Date), 0) '前月の末日
DateSerial(Year(Date), Month(Date) + 2, 0) '来月の末日
まとめ
DateSerial関数は、単純に日付を生成する関数としても使えますが、数値を操作することで前月や翌月の日付も生成できます。
特に日付で 0 をセットする方法は良く使うので覚えておくと良いでしょう。