更新日:、 作成日:

VBA Time 関数:現在の時間を取得する

はじめに

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

Time 関数は、現在の時刻を返します。

現在の日時が 2000年1月2日 3時4分5秒 なら 3:04:05 を返します。

現在の時刻を取得したいときに使用します。

現在の日時を取得するには「Now 関数」を使用します。
現在の日付を取得するには「Date 関数」を使用します。
日付を入力や取得するには「日付を入力する」をご覧ください。

Time 関数の引数と戻り値

Time()
現在の時刻を取得します。

戻り値の型日付型 (Date)

解説

Windows の時刻を返します。日付は 1899/12/30 です。この日が時刻を表す日付です。

日時から時間を取得するには「TimeValue 関数」を使用します。

時分秒を取得するには「Hour 関数Minute 関数Second 関数」を使用します。

時間を計算

Time + #1:00:00# で 1 時間後、Time - #0:10:00# で 10 分前の時刻を取得できます。

日時を計算するには「DateAdd 関数」を使用します。

時間を計算するには「日付を計算する」をご覧ください。

ミリ秒

ミリ秒を取得するには「Timer 関数」を使用します。

日付型 (Date) はミリ秒に対応していないので、文字列としてミリ秒を結合します。

使用例

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

現在時刻を取得する

現在日時が 2013/01/02 3:04:05 のときに時間を取得する。

Now 関数」や「Date 関数」を使用して、現在の日時や日付を取得できます。

Dim d As Date

d = Time
Debug.Print(d) ' 3:04:05

d = Now
Debug.Print(d) ' 2013/01/02 3:04:05

d = Date
Debug.Print(d) ' 2013/01/02

ミリ秒を取得する

Timer 関数」を使用して、ミリ秒を取得できます。

Dim 時刻 As Double
時刻 = Timer
Debug.Print(時刻)   ' 11045.140625

Dim 秒数 As Double
秒数 = Int(時刻)
Debug.Print(秒数)   ' 11045

Dim ミリ秒 As Double
ミリ秒 = 時刻 - 秒数
Debug.Print(ミリ秒) ' 0.140625

' 現在時刻
Debug.Print(Format(Time, "h:nn:ss") & Mid(ミリ秒, 2)) ' 3:04:05.140625

日時から時間を取得する

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

時分秒を取得する

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

Dim d As Date
d = Now ' 2013/01/02 3:04:05

Debug.Print(Year(d))    ' 2013
Debug.Print(Month(d))   ' 1
Debug.Print(Day(d))     ' 2

Debug.Print(Hour(d))    ' 3
Debug.Print(Minute(d))  ' 4
Debug.Print(Second(d))  ' 5  

時間を計算する

DateAdd 関数」を使用して、日付を計算できます。

Dim d As Date

' 1 時間後
d = Time + #1:00:00#      
Debug.Print(d) ' 4:04:05

d = DateAdd("h", 1, Time)
Debug.Print(d) ' 4:04:05

' 10 分前
d = Time - #0:10:00#        
Debug.Print(d) ' 2:54:05

d = DateAdd("n", -10, Time)
Debug.Print(d) ' 2:54:05