この記事ではDateSerial関数の使い方と注意点について解説します。
他のよく使うVBA関数一覧はこちら。
DateSerial関数の使い方と注意点
DateSerial関数は、指定した年・月・日から日付を生成して返す関数です。
日付の計算や処理の基点となる日付を作るときによく利用されます。
構文
DateSerial(年, 月, 日)
- 年 : 西暦。100以上9999以下の数値、または数式
- 月 : 1~12。ただし1未満や13以上を指定すると繰り下げ・繰り上げ計算されます
- 日 : 1~31。ただし1未満や月の日数より大きい値を指定すると前月や翌月に補正されます
- 戻り値 : 指定した年月日を表す日付
使用例
日付を作成する
Sub Sample()
Debug.Print DateSerial(2025, 1, 15)
End Sub
▶ 出力結果
2025/01/15
月の指定による年の繰り上げ/繰り下げ
第2引数には月数を指定しますが、13以上や0以下を指定すると繰り上げ繰り下げが行われます。
まずは12より大きい場合、
Sub Sample()
Debug.Print DateSerial(2025, 13, 1)
End Sub
2025/12/1から12より大きい分の1ヶ月が加算され、2026/01/01となります。
2026/01/01
次に1より小さい場合、
Sub Sample()
Debug.Print DateSerial(2025, -2, 1)
End Sub
2025/1/1から1より小さい分の3ヶ月が減算され、2024/10/01となります。
2024/10/01
月を0にすると前年の末月
上記を利用すると第2引数に0を指定すると前年の末月を得ることができます。
Sub Sample()
Debug.Print DateSerial(2025, 0, 1)
End Sub
2024/12/01
日の指定による月の繰り上げ/繰り下げ
第3引数には日数を指定しますが、月の日数を超える値や0以下を指定すると繰り上げ繰り下げが行われます。
まずは月の日数を超える場合
Sub Sample()
Debug.Print DateSerial(2025, 1, 32)
End Sub
2025年1月は31日までです。
2025/1/1から31より大きい分の1日が加算され、2025/02/01となります。
2025/02/01
次に1より小さい値の場合
Sub Sample()
Debug.Print DateSerial(2025, 1, -2)
End Sub
2025/1/1から1より小さい分の3日が減算され、2024/12/29となります。
2024/12/29
日を0にすると前月の末日
上記を利用すると第3引数に0を指定すると前月の末日を得ることができます。
Sub Sample()
Debug.Print DateSerial(2025, 2, 0)
End Sub
2025/01/31
⚠️注意
年は西暦で指定する
年(第1引数)は西暦4桁を推奨します。
2桁を指定すると環境によっては、意図とは異なる結果になる場合があります。
Sub Sample()
Debug.Print DateSerial(50, 1, 1)
End Sub
1950/01/01
その他のVBA関数
【Excel VBA】VBAでよく使う関数一覧&基本の使い方