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.OnTime或Application.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,768 到 32,767 之間(Integer 的範圍)。若直接傳入例如 TimeSerial(0, 0, 100000),會引發 Run-time error '6': Overflow(溢位)錯誤。
⚠️ 注意事項 2:不包含日期資訊
TimeSerial 僅回傳時間部分(底層數值為 0 到 0.99999 之間的浮點數)。若要生成包含特定年、月、日與時、分、秒的完整 Date 物件,應將 DateSerial 與 TimeSerial 相加:
Dim fullDateTime As Date
fullDateTime = DateSerial(2026, 9, 1) + TimeSerial(14, 30, 0)
五、 相關函數推薦
DateSerial:傳入年、月、日以建立標準日期值。TimeValue:將時間文字字串(如 "14:30:00")轉換為時間值。Hour/Minute/Second:分別從時間值中提取小時、分鐘或秒數。
六、 官方文件連結
想進一步瞭解更詳細的極端情境與進階用法,可參考微軟官方說明:
留言
張貼留言