Excel Wait / Delay -- timer (VB / VBA)

2007-02-08 11:57 pm
我想寫 delay 0.5 second, 用 VB / VBA 寫都得.

以下這個方法好似 min 都係只可以 set 到 1 sec -->
application.wait now()+ timevalue("00:00:xx")

所以如果我要 wait / delay 0.5 second 可以點做.
Thanks.

回答 (1)

2007-02-09 8:50 am
✔ 最佳答案
時間單位 1 = 1 日
1 秒, 可用 1/24/60/60 表示
0.5秒, 可用 0.5/24/60/60
我剛寫以下的 Excel VBA 作測試:
Sub waitime()
Range("a1") = Now
Application.Wait (Now() + 0.5 / 24 / 60 / 60)
Range("a2") = Now
Application.Wait (Now() + 0.5 / 24 / 60 / 60)
Range("a3") = Now
Application.Wait (Now() + 0.5 / 24 / 60 / 60)
Range("a4") = Now
Application.Wait (Now() + 0.5 / 24 / 60 / 60)
Range("a5") = Now
Application.Wait (Now() + 0.5 / 24 / 60 / 60)
Range("a6") = Now
Application.Wait (Now() + 0.5 / 24 / 60 / 60)
Range("a7") = Now
End Sub
測試結果: 0.5完全沒有Delay, A1:A7 的時間完全一樣
改 0.6→全部Delay 1秒
改 2.5→全部Delay 2秒
改 2.6→全部Delay 3秒
如此類推, 小數值全部5捨6入
但唯一例外是 1.5, 是Delay 1秒/2秒/1秒/2秒/1秒/2秒, 即可做到 1.5秒 delay
反覆測試了無數次, 結果都是一樣。
我的總結是: 以上的VBA編寫方法是正確的, 但 VBA 及 EXCEL 本身是沒有時間系統, 它祇能應用上層(即MS Windows 的小時鐘)的時間系統。故VBA在此方面的指令的效果最終都要服從於MS Windows本身的時間性質, 無法問點解。


收錄日期: 2021-04-24 22:49:30
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070208000051KK01632

檢視 Wayback Machine 備份