この記事ではTimeSerial関数の使い方と注意点について解説します。
他のよく使うVBA関数一覧はこちら。
TimeSerial関数の使い方と注意点
TimeSerial関数は、指定した時・分・秒から時刻を生成して返す関数です。
時間計算や処理の基点となる時刻を作るときによく利用されます。
構文
TimeSerial(時, 分, 秒)
- 時 : 0~23。ただし0未満や24以上を指定すると補正される
- 分 : 0~59。ただし0未満や60以上を指定すると繰り下げ・繰り上げ計算されます
- 秒 : 0~59。ただし0未満や60以上を指定すると繰り下げ・繰り上げ計算されます
- 戻り値 : 指定した時分秒を表す時刻(Date型)。日付部分は既定で「1899/12/30」が設定されます。
使用例
時刻を作成する
Sub Sample()
Debug.Print TimeSerial(14, 30, 0)
End Sub
▶ 出力結果
14:30:00
分や秒の繰り上げ
分や秒に範囲外の値を指定すると自動補正されます。
まずは分に1時間を超える値を指定した場合、
Sub Sample()
Debug.Print TimeSerial(10, 75, 0) ' 分に75を指定
End Sub
▶ 出力結果
11:15:00
1時間より多い分の15分が繰り上げられ、11時15分となります。
秒に1分を超える値を指定した場合も同様に、
Sub Sample()
Debug.Print TimeSerial(8, 0, 90) ' 秒に90を指定
End Sub
▶ 出力結果
8:01:30
1分より多い分の30秒が繰り上げられ、8時1分30秒となります。
負の値を指定した繰り下げ
0未満を指定すると前の時間に補正されます。
まずは分に0未満の値を指定した場合、
Sub Sample()
Debug.Print TimeSerial(12, -15, 0)
End Sub
▶ 出力結果
11:45:00
12時から15分が引かれ、11時45分00秒となります。
次に秒に0未満の値を指定した場合、
Sub Sample()
Debug.Print TimeSerial(12, 0, -15)
End Sub
▶ 出力結果
11:59:45
12時から15秒が引かれ、11時59分45秒となります。
⚠️注意
時の補正は分・秒と異なる
分や秒は範囲外の値を指定すると繰り上げ・繰り下げが行われます。
一方「時」の場合、補正方法が異なるため注意が必要です。
Sub Sample()
Debug.Print TimeSerial(0, 0, 0) ' 0時ちょうど
Debug.Print TimeSerial(-2, 0, 0) ' -2時間
Debug.Print TimeSerial(25, 0, 0) ' 25時
End Sub
▶ 出力結果
0:00:00
2:00:00
1899/12/31 1:00:00
-
0未満を指定した場合
-2
のように負の値を指定すると「その絶対値が加算」されます。
基準日が前日に繰り下がるわけではありません。
→TimeSerial(-2,0,0)
は「2:00:00」となる(前日にはならない)。 -
24以上を指定した場合
分や秒と同様に繰り上がりが発生します。
この場合は「基準日(1899/12/30)」から翌日に補正されるため、日付部分も変化して表示されます。
→TimeSerial(25,0,0)
は「1899/12/31 1:00:00」
その他のVBA関数
【Excel VBA】VBAでよく使う関数一覧&基本の使い方