更新日:、 作成日:
VBA Hour 関数:時を取得する
はじめに
Excel VBA マクロの Hour 関数から時を取得する方法を紹介します。
Hour 関数は、指定した時刻の時を返します。
1:02:03 なら 1 を返します。
Int(日時) * 24 + Hour(日時) のようにして、24 時間以上の値を取得できます。
時間から時の値を取得したいときに使用します。
時間を入力や取得するには「日付を入力する」をご覧ください。
Hour 関数の引数と戻り値
Hour(時刻)
時刻から時を取得します。
引数「時刻」 | 時刻を指定します。 |
戻り値の型 | 数値型 (Integer) |
解説
引数「時刻」が 1:02:03 なら 1 を返します。
引数「時刻」が日付だけなら 0 を返します。
時を 2 桁の文字列で返すなど、書式や形式を指定するには「Format 関数」を使用します。
年月日を取得するには「Year 関数、Month 関数、Day 関数」を使用します。
時分秒を取得するには「Hour 関数、Minute 関数、Second 関数」を使用します。
24 時間以上
Hour 関数から 24 時間以上の値を取得することはできません。
1 日が 24 時間なので Int(日時) * 24 + Hour(日時) のように入力して、24 時間以上の時を取得できます。
スポンサーリンク
使用例
Hour 関数の使用例を紹介します。
時を取得する
時間の時を取得します。
Dim i As Integer
i = Hour("1:2:3")
Debug.Print(i) ' 1
i = Hour("10:20:30")
Debug.Print(i) ' 10
i = Hour("2013/1/2") ' 2013/1/2 0:00:00
Debug.Print(i) ' 0
24 時間以上の時を取得する
1 日を 24 時間に換算して 24 時間以上の値を取得できます。関数を作成すると便利です。
Sub 実行()
Dim d As Date
Dim i As Integer
d = TimeSerial(1, 2, 3) ' 1:02:03
i = Int(d) * 24 + Hour(d)
i = HourOver24(d)
Debug.Print (i) ' 1
d = TimeSerial(24, 2, 3) ' 24:02:03
i = Int(d) * 24 + Hour(d)
i = HourOver24(d)
Debug.Print (i) ' 24
d = TimeSerial(48, 2, 3) ' 48:02:03
i = Int(d) * 24 + Hour(d)
i = HourOver24(d)
Debug.Print (i) ' 48
End Sub
' 日時から 24 時間以上の時を取得します。
Function HourOver24(ByVal dateTime As Date) As Integer
HourOver24 = Int(dateTime) * 24 + Hour(dateTime)
End Function
年月日や時分秒を取得する
「Year 関数、Month 関数、Day 関数」を使用して、年月日を取得できます。
「Hour 関数、Minute 関数、Second 関数」を使用して、時分秒を取得できます。
Dim d As Date
d = "2013/1/2 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
書式や形式を指定する
「Format 関数」を使用して、時の書式や形式を指定できます。
Dim d As Date
d = "2013/1/2 3:4:5"
Debug.Print(Format(d, "h")) ' 3
Debug.Print(Format(d, "hh")) ' 03
Debug.Print(Format(d, "h 時")) ' 3 時
Debug.Print(Format(d, "h:nn:ss")) ' 3:04:05
「Format 関数」から 24 時間以上の時を取得できません。上記の方法で取得した 24 時間以上の値と結合します。
Dim d As Date
Dim i As Integer
d = TimeSerial(1, 2, 3) ' 1:02:03
i = Int(d) * 24 + Hour(d)
Debug.Print (i & Format(d, ":nn:ss")) ' 1:02:03
Debug.Print (Format(i, "00") & Format(d, ":nn:ss")) ' 01:02:03
d = TimeSerial(24, 2, 3) ' 24:02:03
i = Int(d) * 24 + Hour(d)
Debug.Print (i & Format(d, ":nn:ss")) ' 24:02:03
Debug.Print (Format(i, "00") & Format(d, ":nn:ss")) ' 24:02:03
スポンサーリンク