返回列表 上一主題 發帖

[發問] 多個巨集,自動化問題

[發問] 多個巨集,自動化問題

大家好:
程式大致上為
Sub 程式1()
...
Application.OnTime Now + TimeValue("00:00:10"), "程式2"
Sub End
Sub 程式2()
...
Application.OnTime Now + TimeValue("00:00:10"), "程式3"
Sub End

Sub 程式3()
Sub End

執行程式1-X個巨集約2分鐘

Sub 程式4()
Sub End

執行程式4約1分鐘

Sub 程式5()
Sub End

執行程式5約1分鐘

Sub 程式6()
Sub End

執行程式6約8分鐘

Sub 自動化()
    程式1
    程式4
    程式5
    程式6
Sub End

為什麼我利用自動化巨集來執行程式1、4-6
照道理說應該會是程式1跑完才會執行程式4及陸續執行程式5和6
可是問題來了
程式1未跑完就執行程式4-5

實在找不出原因
請各位大大指教

回復 1# spermbank
問題是沒有看到你程式的內容,
可按 F8 一行一行執行 Sub 自動化() 找出原因.

TOP

回復 1# spermbank
Application.OnTime 的 Priority 應優先於一般程式碼之緣故。

TOP

若是單純以 程式銜接來看...
    Application.Run "活頁簿1!巨集1"
    Application.Run "活頁簿1!巨集2"

  多做多想多學習,少看少錯少迷途

  多做=多多練習,多多編寫。
  多想=想想為什麼人家程式要那樣寫,如果換成自己,又會怎寫。
  多學習=學習人家的發問並解答,學習人家的寫法

  少看=只看不做也枉然

TOP

回復 4# mark15jill
因為執行之程式碼為:
  1. Sub 自動化()
  2.     程式1
  3.     程式4
  4.     程式5
  5.     程式6
  6. Sub End
複製代碼
所以才會有#1樓主所述的狀況引發。

TOP

若是因為Application.OnTime 的 Priority 應優先於一般程式碼之緣故
請問有解嗎? 因為程式很大,一改我的腦袋就亂了。

TOP

若是因為Application.OnTime 的 Priority 應優先於一般程式碼之緣故
請問有解嗎? 因為程式很大,一改我的腦 ...
spermbank 發表於 2012-10-24 23:15

執行緒的優先順序是由系統內部去控制管理的,一般在應用上,
使用者是無法駕馭的,況且它屬系統排程控管項,而且程式4、
程式5、程式6等的排程都可能比程式1執行處理的時段還短。
以往在實務處理上,都盡可能去考量、與避除這些困惱問題,
執行它們時都會先讓主模組執行完後,再去處理後續的程式段。

TOP

留意一下GBKEE大大說的

簡單來說 Application.OnTime 是會讓系統運行方向由1變為2
Application.OnTime ...以下的 會"立即"運行.

如果程式4一定要在程式3() 後運行, 那其中一個方法是在程式3()呼叫程式4

如果只是想系統等後一下, 可以用application.wait
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

謝謝各位大大的意見分享,我大概了解囉,謝謝。

TOP

        靜思自在 : 【是否發揮了良能?】人間壽命因為短暫,才更顯得珍貴。難得來一趟人間,應問是否為人間發揮了自己的良能,而不要一味求長壽。
返回列表 上一主題