VBA TimeValue 関数:日時から時間を取得する

はじめに

Excel VBA マクロの TimeValue 関数から日時から時間を取得する方法を紹介します。

TimeValue 関数は、指定した日時の時刻を返します。

2013/01/02 3:04:05 なら 3:04:05 の時刻を取得できます。

日時から時間の部分を取得したいときに使用します。

日時から日付を取得するには「DateValue 関数」を使用します。
日付を入力や取得するには「日付を入力する」をご覧ください。
  • 目次
    • TimeValue 関数の引数と戻り値
    • 解説
    • 使用例

TimeValue 関数の引数と戻り値

TimeValue(日時)
日時から時刻を取得します。

引数「日時」日時を指定します。
戻り値の型日付型 (Date)

解説

引数「日時」が 2013/01/02 3:04:05 なら、3:04:05 の時間を返します。

引数「日時」が 2013/01/02 なら、0:00:00 の時間を返します。

日付型の範囲は 西暦100年1月1日 ~ 西暦9999年12月31日 です。これを超えるときは「エラー 13 型が一致しません。」が発生します。

使用例

TimeValue 関数の使用例を紹介します。

日時から時間を取得する

日時から時間を取得します。

Dim d As Date

d = TimeValue("2013/1/2 3:4:5")
Debug.Print(d) ' 3:04:05

d = TimeValue("2013年1月2日 3時4分5秒")
Debug.Print(d) ' 3:04:05

d = TimeValue("1:2:3")
Debug.Print(d) ' 1:02:03

d = TimeValue("1時2分3秒")
Debug.Print(d) ' 1:02:03

d = TimeValue("1:2:3")
Debug.Print(d) ' 1:02:03、全角は取得できる

Debug.Print(TimeValue(0))              ' エラー、CDate 関数なら変換できる

Debug.Print(TimeValue("24:00:00"))     ' エラー、24 時間を超える時刻は変換できない

Debug.Print(TimeValue("一時二分三秒")) ' エラー、漢数字は変換できない

時分秒を取得する

Hour 関数Minute 関数Second 関数」を使用して、時分秒を取得できます。

DimAs Integer
DimAs Integer
DimAs Integer
時 = Hour(Now)   ' 時
分 = Minute(Now) ' 分
秒 = Second(Now) ' 秒

Dim t As Date
t = TimeSerial(時, 分, 秒)
Debug.Print(t) ' 現在の時刻

現在の時間を取得する

Time 関数」を使用して、現在の時間を取得できます。

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