VB6・VBA関数メモ:TimeSerial関数

TimeSerial関数についてメモしておきます。
時,分,秒を指定して時刻に変換する関数になります。

時は0〜23、分,秒は0〜59の範囲を超えて指定できるので案外自由度が高いです。
DateAdd関数のように時刻の増減計算もできます。
ただ、時分秒の引数全てが必須なのがちょっと残念…


概要

TimeSerial(Hour As Integer, Minute As Integer, Second As Integer)
機能 指定した年,月,日に対応した日付を返す
引数 Hour Integer型
Minute Integer型
Second Integer型
戻り値 時刻 Variant型(Date型)


使用例

説明 記述例 出力
指定の時分秒の時刻を取得 TimeSerial(11,12,13) #11:12:13#


動作検証

説明 記述例 出力
時に24以降を指定すると日付をつけて調整 TimeSerial(24, 0, 0) #1899/12/31 0:00:00#
時は絶対値を使用
ただし-24以降を指定した場合の日付はマイナスで計算
TimeSerial(-1, 0, 0) #1:00:00#
TimeSerial(-24, 0, 0) #1899/12/29 0:00:00#
存在しない分の場合は、自動的に調整 TimeSerial(11, -1, 0) #10:59:00#
TimeSerial(11, 60, 0) #12:00:00#
存在しない秒の場合は、自動的に調整 TimeSerial(11, 1, -1) #11:00:59#
TimeSerial(11, 0, 60) #11:01:00#
マイナス値の指定も可能 TimeSerial(1, -1, -1) #0:58:59#


応用例

説明 記述例 出力
5分後の時刻を取得
(パターン)
Dim day As Date
day = "11:59:00"
Debug.Print TimeSerial(DatePart("h", day), _
                       DatePart("n", day) + 5, _
                       DatePart("s", day))
#12:04:00#
5分後の時刻を取得
(パターン)
Dim hour As Integer
Dim min As Integer
Dim sec As Integer

hour = 11
min = 59
sec = 0

Debug.Print TimeSerial(hour, min + 5, sec)
#12:04:00#
5分後の時刻を取得
(DateAdd関数を使用した場合)
Dim day As Date
day = "11:59:00"
Debug.Print DateAdd("n", 5, day)
#12:04:00#


コメント
コメントする








    
この記事のトラックバックURL
トラックバック