VBA開発

時/分/秒から時刻データを取得する【TimeSerial 関数】VBA

構文

TimeSerial(Hour,Minute,Second)

Hour   ・・・を表す数値(integer型) 必須項目 数値範囲:0~23※24等も指定可能(後述参照)
Minute・・・を表す数値(integer型) 必須項目 数値範囲:0~59※-1や60も指定可能(後述参照)
Second・・・を表す数値(integer型) 必須項目 数値範囲:0~59※-1や60等も指定可能(後述参照)
戻り値・・・ヴァリアント型 (Variant)

注意点

  • 各引数の対応範囲「32768~32768※範囲外はエラーが発生
  • 戻り値はVariant型でDate型の初期値「1899/12/30」です。
  • 3つの引数で指定した時刻範囲「00:00:00~23:59:59(AM12:00:00~PM11:59:59)」ではない場合、
    エラーは発生せず、正しく計算されません。

コードサンプル

Public Sub test()
    '■通常の使い方
    MsgBox TimeSerial(0, 0, 0)      '→ 0:00:00
    MsgBox TimeSerial(10, 20, 30)   '→10:20:30
    
    '■時分秒をオーバーして指定した場合
    MsgBox TimeSerial(24, 10, 20)   '→1899/12/31 0:10:20
    MsgBox TimeSerial(10, 60, 0)    '→11:00:00(10:59:00の1分後)
    MsgBox TimeSerial(10, 0, 60)    '→10:01:00(10:00:59の1秒後)

    '■分秒をマイナス値して指定した場合
    MsgBox TimeSerial(-10, 0, 0)    '→10:00:00(Date型の初期値の範囲を超えたため正しく計算されない) 
    MsgBox TimeSerial(12, -1, 0)    '→11:59:00(12:00:00の1分前)
    MsgBox TimeSerial(12, 0, -1)    '→11:59:59(12:00:00の1秒前)

End Sub

使い方例

DateSerial関数のように月末日を求めるような使い方は事務職では多く使いますが、
TimeSerial関数では以下のように動作を止める・動作の契機とするなどの使い方がメインと考えます。

  • Excelブックを開く時間に制限時間を設ける
    (ブックの共有をしていない状態で特定の人が開きっぱなしを防止する)
  • 指定時間マクロの動作をストップする
  • 指定時間経過後、メッセージを表示する

 

コメント

タイトルとURLをコピーしました