VBA TimeSerial 関数:時分秒から時間を取得する

はじめに

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

TimeSerial 関数は、時分秒の各値から時刻を返します。

TimeSerial(1, 2, 3) のようにして、1:02:03 の時間を取得できます。

24 時間以上の時間を入力できます。

時分秒に分かれた値から時間を取得したいときに使用します。

年月日から日付を取得するには「DateSerial 関数」を使用します。
数値を時間に変換するには「数値を変換する」をご覧ください。
  • 目次
    • TimeSerial 関数
    • 解説
    • 使用例

TimeSerial 関数

TimeSerial(, , )
指定したの時刻を取得します。

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

解説

引数「時」には 0 ~ 23 の他に -1 以下や 24 以上も指定できます。 24 なら翌日の 0 時になります。

引数「分」には 0 ~ 59 の他に -1 以下や 60 以上も指定できます。 60 なら 1 時間後の 0 分になります。

引数「秒」には 0 ~ 59 の他に -1 以下や 60 以上も指定できます。 60 なら 1 分後の 0 秒になります。

24 時間以上

時刻を表す日付は、日付型の初期値 1899/12/30 です。引数「時」が 24 なら、翌日の 0 時である 1899/12/31 0:00:00 になります。これで 24 時間以上を表しています。

使用例

時分秒から時間を取得する。

Dim t As Date

t = TimeSerial(1, 2, 3)
Debug.Print(t) ' 1:02:03、日付が 1899/12/30 のときは時刻だけ表示

t = TimeSerial(24, 2, 3) ' 時が 24
Debug.Print(t) ' 1899/12/31 0:02:03

t = TimeSerial(48, 2, 3) ' 時が 48
Debug.Print(t) ' 1900/01/01 0:02:03

t = TimeSerial(1, -1, 3) ' 分が -1
Debug.Print(t) ' 0:59:03

t = TimeSerial(1, 60, 3) ' 分が 60
Debug.Print(t) ' 2:00:03

t = TimeSerial(1, 2, -1) ' 秒が -1
Debug.Print(t) ' 1:01:59

t = TimeSerial(1, 2, 60) ' 秒が 60
Debug.Print(t) ' 1:03:00

時分秒を取得

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

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

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