概要
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
環境
- 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 関数のデフォルトの出力結果なのだろうか。よくわからん。