Excel VBAのDateSerial関数で元の値が空欄だと1999/11/30が返ってくる

気になったこと
概要

Excel VBAで、DateSerial関数を使った。
その際、元となる値として年・月・日のそれぞれの数値が必要となるのだが、これらが空欄だと、関数の結果として 1999/11/30 が返ってくる。

詳細

現象

Excel VBAで、DateSerial関数を使った。
この時、元となる値として年・月・日のそれぞれの数値が必要となるのだが、これらが空欄だと、関数の結果として 1999/11/30(シリアル値:36494)が返ってくる。

VBAコード
 ※ 実行対象シートの Cells(1,1)~(1,3) はそれぞれ空欄の状態で実行

Sub sample_k()
Cells(1, 4) = DateSerial(Cells(1, 1), Cells(1, 2), Cells(1, 3))
End Sub

実行結果のシート
キャプチャ.PNG

環境

  • OS: Windows 11 Pro バージョン:21H2 OSビルド:22000.132
  • Excel: Microsoft Excel for Microsoft 365 MSO (16.0.14228.20216) 64 ビット 2107(ビルド 14228.20226)

所感

初めはシリアル値の1番目の値なのかな?と一瞬思ったけど、違う。シリアル値が1の場合、それが示す日付は 1900/1/1 となる。
今回の 1999/11/30 というのは、DeteSerial 関数のデフォルトの出力結果なのだろうか。よくわからん。

タイトルとURLをコピーしました