背景
VBA関数「DateSerial」の引数を、いろいろと変化させた時の戻り値を調べます。
シートに、下のような表を作成します。

また、以下のコードを書きます。
Sub Test_DateSerial()
'順に「年・月・日」用
Dim Y As Integer
Dim M As Integer
Dim D As Integer
'「年」を入力したセル番地の指定用
Const colStart As String = "C"
Const rowStart As Long = 2
'セルに入力された「年・月・日」を変数に格納
Y = Range(colStart & rowStart).Value
M = Range(colStart & rowStart + 1).Value
D = Range(colStart & rowStart + 2).Value
'「戻り値」表示用のセルに結果を格納
Range(colStart & rowStart + 3).Value = DateSerial(Y, M, D)
End Sub画像はこちら。

これを実行すると、下図のようになります。

月の引数を変える(0やマイナスにしてみる)
月の引数を変える=C3セルの値を、
- 13
- 0
- -1
- -13
と変化させて、上記コードを実行した時の戻り値がどうなるか確認します。

このように、0やマイナスにしても、2026/1/1を起点「1」にして、そこから引数との差分だけ進んだ(戻った)日付が、戻り値として返されました。
日の引数を変える(0やマイナスにしてみる)
同様に、日の引数を変える=C4セルの値を、
- 0
- -1
と変化させて、上記コードを実行した時の戻り値がどうなるか確認します。

「0」にすると「前月の末日」が、「-1」にすると「前月の末日の前日」が返されました。
このように、DateSerial関数は、引数の許容範囲が広く、アイデア次第で便利に使えそうです。
たた、戻り値をよく確認してからにしないと、意図しない結果も招きそうなので、注意しようと思います。
ちなみに「年」を「0」にすると…
こうなります。

参考
- Excel VBA でちゃんとしたアプリを作る本 | 田中 徹 |本 | 通販 | Amazon
- DateSerial 関数 (Visual Basic for Applications) | Microsoft Learn
投稿時の環境
- Windows11 Home Ver. 25H2
- Excel for Microsoft 365 Ver. 2607