この記事ではHour関数の使い方と注意点について解説します。
他のよく使うVBA関数一覧はこちら。
Hour関数の使い方と注意点
Hour関数は、指定した時刻から「時」を取得する関数です。
0〜23の整数を返します。
構文
Hour(時刻)
- 時刻 : 時刻を表すDate型の値、または時刻として解釈可能な文字列
- 戻り値 : 指定した時刻の「時」(Integer型、0〜23)
使用例
時刻から「時」を取得する
Sub Sample()
Dim MyTime As Date
MyTime = #15:45:12#
Debug.Print Hour(MyTime)
End Sub
▶ 出力結果
15
Now関数の結果から時を取得する
Sub Sample()
Debug.Print Hour(Now)
End Sub
▶ 出力結果(実行が午後3時の場合)
15
時刻の時間帯によって処理を分ける
Sub Sample()
Dim MyHour As Integer
MyHour = Hour(Time)
If MyHour < 12 Then
Debug.Print "午前"
Else
Debug.Print "午後"
End If
End Sub
▶ 出力結果(実行が午後3時の場合)
午後
⚠️注意
文字列を渡す場合は、時刻として解釈できる形式にする必要がある
Sub Sample()
On Error Resume Next
Err.Clear
Debug.Print Hour("15/45/12") ' 区切り文字が不正
If Err.Number <> 0 Then Debug.Print "15/45/12 : エラー:" & Err.Description
Err.Clear
Debug.Print Hour("25:00:00") ' 25時は存在しない
If Err.Number <> 0 Then Debug.Print "25:00:00 : エラー:" & Err.Description
Err.Clear
Debug.Print Hour("一時間後") ' 自然言語は無効
If Err.Number <> 0 Then Debug.Print "一時間後 : エラー:" & Err.Description
On Error GoTo 0
End Sub
▶ 出力結果
15/45/12 : エラー:型が一致しません。
25:00:00 : エラー:型が一致しません。
一時間後 : エラー:型が一致しません。
上記ではエラー発生時にエラーを無視して次の処理を実行するよう記述していますが、
エラーを無視する記述が無い場合、エラー時に処理が止まってしまいます。
引数に渡す内容には注意しましょう。
戻り値に「前ゼロ」は付かない
戻り値は数値であり文字列ではないため前ゼロ(例:01)は付きません。
前ゼロを付けたい場合にはFormat関数を使用しましょう。
Sub Sample()
Debug.Print Format(Hour(Now), "00")
End Sub
▶ 出力結果(午前9時の場合)
09
関連するVBA関数
その他のVBA関数
【Excel VBA】VBAでよく使う関数一覧&基本の使い方