更新日:、 作成日:
VBA DateValue 関数:日時から日付を取得する
はじめに
Excel VBA マクロの DateValue 関数から日時から日付を取得する方法を紹介します。
DateValue 関数は、指定した日時の日付を返します。
2013/01/02 3:04:05 なら 2013/01/02 の日付を取得できます。
日時から日付の部分を取得したいときに使用します。
日時から時間を取得するには「TimeValue 関数」を使用します。
日付を入力や取得するには「日付を入力する」をご覧ください。
DateValue 関数の引数と戻り値
DateValue(日時)
日時から日付を取得します。
引数「日時」 | 日時を指定します。 |
戻り値の型 | 日付型 (Date) |
解説
引数「日時」が 2013/01/02 3:04:05 なら、2013/01/02 の日付を返します。
引数「日時」が文字列で、年が 2 桁なら 0 ~ 49 は 2000 ~ 2049 年 、50 ~ 99 は 1950 ~ 1999 年 になります。Windows のバージョンによって変わります。
引数「日時」が 3:04:05 なら、日付型の初期値 1899/12/30 の日付を返します。
日付型の範囲は 西暦100年1月1日 ~ 西暦9999年12月31日 です。これを超えるときは「エラー 13 型が一致しません。」が発生します。
使用例
DateValue 関数の使用例を紹介します。
日時から日付を取得する
日時から日付を取得します。
Dim d As Date
d = DateValue("2013/1/2 3:4:5")
Debug.Print(d) ' 2013/01/02
d = DateValue("2013年1月2日 3時4分5秒")
Debug.Print(d) ' 2013/01/02
d = DateValue("1:2:3")
Debug.Print(d) ' 0:00:00、日付が 1899/12/30 のときは時刻だけ表示
d = DateValue("1時2分3秒")
Debug.Print(d) ' 0:00:00、日付が 1899/12/30 のときは時刻だけ表示
d = DateValue("2013/1/2")
Debug.Print(d) ' 2013/01/02、全角は取得できる
Debug.Print(DateValue(0)) ' エラー、CDate 関数なら変換できる
Debug.Print(DateValue("24:00:00")) ' エラー、24 時間を超える時刻は変換できない
Debug.Print(DateValue("一月三十一日")) ' エラー、漢数字は変換できない
年月日を取得する
「Year 関数、Month 関数、Day 関数」を使用して、年月日を取得できます。
Dim 年 As Integer
Dim 月 As Integer
Dim 日 As Integer
年 = Year(Now) ' 年
月 = Month(Now) ' 月
日 = Day(Now) ' 日
Dim d As Date
d = DateSerial(年, 月, 日)
Debug.Print(d) ' 今日の日付
現在の日付を取得する
「Date 関数」を使用して、現在の日付を取得できます。
Dim d As Date
d = Now
Debug.Print(d) ' 2013/01/02 3:04:05
d = Date
Debug.Print(d) ' 2013/01/02
d = Time
Debug.Print(d) ' 3:04:05
スポンサーリンク