作者ckingsu (ckingsu)
看板Office
標題[算表] Do While LOOP & Application.OnTime
時間Thu Jan 23 13:16:50 2025
軟體: excel
版本: 2021
Sub atime123()
Range("Aa21") = 0
time0 = Time()
time1 = Time()
Do While Range("Aa21") <> Range("Ab21")
time1 = Time() + TimeSerial(0, 0, 1)
Range("Aa21") = DateDiff("s", time0, time1)
DoEvents
Loop
End Sub
雖有 DoEvents 再執行Application.OnTime程序 還是沒辦法正確執行 ??
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.36.77.116 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1737609412.A.CFF.html
1F:→ newacc: 你認為怎樣是正確執行?OnTime寫在哪裡? 01/23 17:26
4F:→ ckingsu: Range("Aa21") = DateDiff("s", time0, time1) 01/23 20:39
5F:→ ckingsu: 改用debug.pring, 或用變數取代 01/23 20:40
6F:→ ckingsu: application.ontime 就能正確執行 01/23 20:41
7F:→ ckingsu: 不知為何會如此? 01/23 20:41
8F:→ ckingsu: 我需要儲存格動態秒數,不知怎麼改? 01/23 20:42
9F:→ ckingsu: 在不影響其他程序的情況下 01/23 20:42
10F:→ newacc: 我提供的螢幕錄影就是你說的儲存格動態秒數吧?是由你文 01/24 02:56
11F:→ newacc: 章裡的程式碼改的,沒辦法執行的話,需要更詳細的程式碼 01/24 02:56
12F:→ newacc: 才有辦法判斷了 01/24 02:56
13F:→ newacc: 你的OnTime是寫在哪裡?呼叫什麼? 01/24 02:57
14F:→ ckingsu: my = #12:00:10 AM# 01/24 05:48
15F:→ ckingsu: The_Time = Now + my 01/24 05:48
16F:→ ckingsu: Application.OnTime The_Time, "timestock" 01/24 05:49
17F:→ ckingsu: Range("J16").Value = Format(The_Time, "hh:mm:ss") 01/24 05:49
18F:→ ckingsu: 10秒執行一次timestock 01/24 05:50
19F:→ ckingsu: timestock->寫一些DDE的資料到儲存格(程式碼不短就不引出 01/24 05:51
20F:→ ckingsu: on time 在第二個10秒就不動了 ? 01/24 05:53
21F:→ ckingsu: 改 A=DateDiff("s", time0, time1)就會動了 01/24 05:54
22F:→ ckingsu: 我剛又隨便寫一個簡單的on time 測試也是不行 01/24 06:47
23F:→ ckingsu: sub acde123() 01/24 06:49
24F:→ ckingsu: [a1] = [a1] + 1 01/24 06:50
25F:→ ckingsu: sw = #12:00:02 AM# 01/24 06:50
26F:→ ckingsu: aaa = Now + sw 01/24 06:50
27F:→ ckingsu: Application.OnTime aaa, "acde123" 01/24 06:51
28F:→ ckingsu: end sub 01/24 06:51
29F:→ ckingsu: 我又詳細測了一次,應該沒問題,不過,產生新的問題 01/24 13:27
30F:→ ckingsu: 執行計時器後,切到別的工作表會自動跳出do loop ? 01/24 13:28
31F:→ ckingsu: 在任一儲存格輸入會計時器終止運行? 01/24 19:23