DateSerial関数は、日付を操作する関数の一つだ。VBAエキスパート試験にもよく出題されるのではないかと思う。このページでは、DateSerial関数の基本的な使い方とVBAエキスパート試験のポイントを説明する。
基本的な使い方
DateSerial関数は、年・月・日に対応する数値から日付を返す。
【書式】
DateSerial(年, 月, 日)
次のプロシージャはDateSerial関数の例だ。引数が3つあることに注意したい。
Sub Test()
MsgBox DateSerial("2018", "12", "25")
End Sub
↓
月と年は2桁で表示される(ゼロ埋め)。
Sub Test()
MsgBox DateSerial("2019", "2", "5")
End Sub
↓
なお、公式テキストには「DateSerial関数は日付データ(シリアル値)を返します」と書かれている。このシリアル値の意味については下記ページで説明している。

DateSerial関数の日付データ(シリアル値)とは?
DateSerial関数は、VBAエキスパート試験を受ける前にしっかり理解しておきたい関数だ。この関数について「VBAエキスパート公式テキスト Exce...
現在の日付のN日後を取得できる
DateSerial関数を使うと、現在の日付から特定日数が経過したあとの日付を取得できる。
たとえば、次のプロシージャを実行すると「現在の日付から100日後の日付」が表示される。
'2019/02/16 の100日後を表示する
Sub Test()
MsgBox DateSerial(Year(Now), Month(Now), Day(Now) + 100)
End Sub
↓

Now関数のポイント
このページでは、日付を操作する関数であるNow関数のポイントを説明する。
基本的な使い方
Now関数は、現在の日時を返す。引数はない。
【書式】
...

Year関数、Month関数、Day関数のポイント
このページでは、日付を操作する関数のポイントを解説する。
Year関数のポイント
Year関数は、日付から西暦年を取り出して返す。次のプロシージャを...
引数にゼロを指定できる
DateSerial関数は、月や日に数値の0を指定することができる。その場合、自動的に適切な日付に変換される。
月に0を指定すると、前年の12月を指定したことになる。
Sub Test()
MsgBox DateSerial(2019, 0, 1)
End Sub
↓
日に0を指定すると、前月の末日の日付を求めることができる。
Sub Test()
MsgBox DateSerial(2019, 3, 0)
End Sub
↓
'2016年は うるう年
Sub Test()
MsgBox DateSerial(2016, 3, 0)
End Sub
↓
マイナスの日付を指定することもできる。
Sub Test()
MsgBox DateSerial(2019, 2, -10)
End Sub
↓
練習問題
プロシージャ「Test」を実行した結果として正しいものはどれか。次の中から1つ選択しなさい。
Sub Test()
MsgBox Month(DateSerial(2018, 4, 0))
End Sub
- メッセージボックスに「0」と表示される
- メッセージボックスに「3」と表示される
- メッセージボックスに「4」と表示される
- 実行時エラーが発生する
正解を見る
2
コメント