VBA TimeSerial 函數:組合時、分、秒建立時間值

VBA TimeSerial 函數:組合時、分、秒建立時間值

📅 發布日期:2026-09-01 🏷️ 分類:日期與時間 VBA 函數
💡 函數速查卡
函數名稱 TimeSerial
所屬類別 日期與時間 (Date & Time)
傳回類型 Variant (Date)
常用頻率 ★★★★☆

在 Excel VBA 中,TimeSerial 是用來組合與生成標準時間格式的核心函數。它允許你分別傳入小時、分鐘與秒數,回傳對應的 VBA Date 型態時間值,特別適合用於時間運算、加減位移或將獨立的時間數值轉換為合法時間。

一、 基本語法與參數

TimeSerial 函數的標準語法結構如下:

TimeSerial(hour, minute, second)
參數 說明 預設值 / 必填
hour 小時數,數值介於 0(12:00 AM)至 23(11:00 PM)之間的整數。 必填
minute 分鐘數,數值為任何整數運算式。 必填
second 秒數,數值為任何整數運算式。 必填

二、 核心功能說明

TimeSerial 可以將獨立的時間組件整合為完整的時間序列值。它最精妙之處在於具備「相對時間調整能力」,當傳入超出標準範圍的數值(如超過 59 分鐘、或負數秒數)時,系統會自動進位或退位計算。

在實際 VBA 自動化開發中,常見的使用情境包括:

  • 將外部來源(如資料庫、CSV 或表格欄位)拆開的時、分、秒文字組合為合法時間。
  • 進行靈活的時間位移運算(例如:計算當前時間 45 分鐘後或 90 秒前的精確時間)。
  • 搭配 Application.OnTimeApplication.Wait 設定精確的排程執行時間。

三、 實用程式碼範例

範例 1:基本時間組合與指定

傳入固定的時、分、秒數值,組合生成標準時間:

Sub CreateTimeExample()
    Dim myTime As Date
    
    ' 建立下午 2 點 30 分 15 秒的時間 (14:30:15)
    myTime = TimeSerial(14, 30, 15)
    
    Debug.Print "組合後的時間: " & Format(myTime, "hh:mm:ss AM/PM")
End Sub

範例 2:利用溢位特性進行相對時間加減運算

利用參數可為負數或超越 60 的特性,快速計算「減去 30 分鐘」或「加上 75 秒」:

Sub RelativeTimeOffset()
    Dim baseHour As Integer
    baseHour = 10 ' 假設基準時間為 10:00:00
    
    ' 計算 10:00:00 減去 35 分鐘 -> 自動換算為 09:25:00
    Dim adjustedTime As Date
    adjustedTime = TimeSerial(baseHour, -35, 0)
    
    Debug.Print "調整後時間: " & Format(adjustedTime, "hh:mm:ss") ' 輸出: 09:25:00
End Sub

範例 3:配合 Application.Wait 建立精確暫停時間

結合當前時間與 TimeSerial,讓程式暫停執行指定秒數:

Sub PauseExecution()
    Debug.Print "開始等待..." & Time
    
    ' 讓程式從現在起暫停 5 秒
    Application.Wait Now + TimeSerial(0, 0, 5)
    
    Debug.Print "等待結束!" & Time
End Sub

四、 常見陷阱與注意事項

⚠️ 注意事項 1:參數數值範圍限制 (Overflow 錯誤)
雖然參數允許超出一小時或一分鐘的範圍,但傳入的數值必須介於 -32,76832,767 之間(Integer 的範圍)。若直接傳入例如 TimeSerial(0, 0, 100000),會引發 Run-time error '6': Overflow(溢位)錯誤。
⚠️ 注意事項 2:不包含日期資訊
TimeSerial 僅回傳時間部分(底層數值為 0 到 0.99999 之間的浮點數)。若要生成包含特定年、月、日與時、分、秒的完整 Date 物件,應將 DateSerialTimeSerial 相加:
Dim fullDateTime As Date
fullDateTime = DateSerial(2026, 9, 1) + TimeSerial(14, 30, 0)

五、 相關函數推薦

  • DateSerial:傳入年、月、日以建立標準日期值。
  • TimeValue:將時間文字字串(如 "14:30:00")轉換為時間值。
  • Hour / Minute / Second:分別從時間值中提取小時、分鐘或秒數。

六、 官方文件連結

想進一步瞭解更詳細的極端情境與進階用法,可參考微軟官方說明:

留言

相關文章 / 薪資情報

文章載入中...

你可能有興趣

精選文章 / 推薦情報

文章載入中...