DateSerial関数のポイント

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

現在の日付のN日後を取得できる

DateSerial関数を使うと、現在の日付から特定日数が経過したあとの日付を取得できる。

たとえば、次のプロシージャを実行すると「現在の日付から100日後の日付」が表示される。

'2019/02/16 の100日後を表示する
Sub Test()
    MsgBox DateSerial(Year(Now), Month(Now), Day(Now) + 100)
End Sub

Now関数やYear関数については下記のページで解説している。
Date関数、Time関数、Now関数のポイント
「Date関数」「Time関数」「Now関数」の3つは日時を操作する関数だ。これらの関数の基本的な使い方とVBAエキスパートのポイントを、このページで説...
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

  1. メッセージボックスに「0」と表示される
  2. メッセージボックスに「3」と表示される
  3. メッセージボックスに「4」と表示される
  4. 実行時エラーが発生する

正解を見る

2

コメント