VB6・VBA関数メモ:DateSerial関数

DateSerial関数についてメモしておきます。
年,月,日を指定して日付に変換する関数になります。

月は1〜12、日は1〜31の範囲を超えて指定できるので案外自由度が高いです。
DateAdd関数のように日付の増減計算もできます。
ただ、年月日の引数全てが必須なのがちょっと残念…


概要

DateSerial(Year As Integer, Month As Integer, Day As Integer)
機能 指定した年,月,日に対応した日付を返す
引数 Year Integer型
Month Integer型
Day Integer型
戻り値 日付 Variant型(Date型)


使用例

説明 記述例 出力
指定の年月日の日付を取得 DateSerial(2011,12,13) #2011/12/13#


動作検証

説明 記述例 出力
Yearが0〜29の場合は
自動的に+2000される
DateSerial(0, 12, 13) #2000/12/13#
DateSerial(29, 12, 13) #2029/12/13#
Yearが30〜99の場合は
自動的に+1900される
DateSerial(30, 12, 13) #1930/12/13#
DateSerial(99, 12, 13) #1999/12/13#
Yearが9999を超える場合はエラー DateSerial(10000, 12, 13) エラー
DateSerial(9999, 12, 13) #9999/12/13#
存在しない月の場合は、自動的に調整 DateSerial(2011, 0, 1) #2010/12/01#
DateSerial(2011, 13, 1) #2012/01/01#
存在しない日の場合は、自動的に調整 DateSerial(2011, 2, 0) #2011/01/31#
DateSerial(2011, 1, 32) #2011/02/01#
マイナス値の指定も可能 DateSerial(-1, -1, -1) #1998/10/30#


応用例

説明 記述例 出力
5日後の日付を取得
(パターン)
Dim day As Date
day = "2011/5/30"
Debug.Print DateSerial(DatePart("yyyy", day), _
                       DatePart("m", day), _
                       DatePart("d", day) + 5)
#2011/06/04#
5日後の日付を取得
(パターン)
Dim year As Integer
Dim month As Integer
Dim day As Integer

year = 2011
month = 5
day = 30

Debug.Print DateSerial(year, month, day + 5)
#2011/06/04#
5日後の日付を取得
(DateAdd関数を使用した場合)
Dim day As Date
day = "2011/5/30"
Debug.Print DateAdd("d", 5, day)
#2011/06/04#


コメント
コメントする








    
この記事のトラックバックURL
トラックバック