Board logo

標題: [發問] 程序停止發問 [打印本頁]

作者: blue2263    時間: 2018-9-4 23:23     標題: 程序停止發問

請教大大以下兩個問題
問1,    我想寫一個停止程序,停止 a123程序,所有項未執行的程序,請教程式碼要如何寫?
問2,   有沒有辦法先判斷,程序是否有排入時程, 確定沒有在執行      Application.OnTime TimeValue("08:43:00"), "程序1"      的方法?

sub  a123() 
Application.OnTime TimeValue("08:43:00"), "程序1"
Application.OnTime TimeValue("09:45:00"), "程序2"
Application.OnTime TimeValue("15:45:00"), "程序3"
end sub
作者: faye59    時間: 2018-9-5 22:39

回復 1# blue2263


    不知道這個是不是你要的,看不太懂你的意思,停止程序?知道停止的位子?知道有沒有執行程序?

加入程序中就可以即時顯示在Excel左下角發現程序狀態。
  1. Application.StatusBar = "顯示文字" 'String
複製代碼

作者: blue2263    時間: 2018-9-6 06:51

回復 2# faye59

謝謝F大解答

程序加入顯示文字,雖然可以知道執行程序在那一個
但是因為排定時程的程序有可能是同一個,且程序太多,也會不好判斷

針對我的問題我在寫詳細一點
問1:   8:30執行( a123程序),我在8:50想停止預定9:45 & 15:45 執行的程序 ,請教程式碼要如何寫?
問2:  問1的問題解決後,己可解決我的問題,我只是想了解,有沒有方法知道,排定程序是否己取消執行
作者: faye59    時間: 2018-9-6 07:14

回復 3# blue2263

問題1
主程式執行中,容許再執行其它巨集, 可使用按鈕指定以下程式,
  1. Sub Stop()
  2.   Application.EnableCancelKey = xlInterrupt
  3. End Sub
複製代碼
或是設定一個變數,
賦予值的時候執行End主程式。
或設定Select Case指定開啟哪些OnTime。

OnTime中防止按Esc中斷程式,在開頭加入
  1. Application.EnableCancelKey = xlDisabled
複製代碼
問題2
程序有設定好的話不應該會未執行自動中斷。
如果沒設定好第一個OnTime也都不會執行。
如果你OnTime的呼叫物件是Excel外要特別注意Windown相關系統。
作者: blue2263    時間: 2018-9-6 22:14

回復 4# faye59

F大您好
我執行(停止執行)程序,依舊無法停止(每分迴圈)程序
不好意思我是初學者,可否請F大大詳解

Sub 每分迴圈()
     xTime = TimeSerial(Hour(Time), Minute(Time) + 1, 0)
     Application.OnTime xTime, "每分執行"
     With ThisWorkbook.Worksheets("工作表1")
         .Cells(1, 1) = .Cells(1, 1) + 1
     End With
End Sub

Sub 停止執行()
    Application.EnableCancelKey = xlInterrupt
End Sub
作者: faye59    時間: 2018-9-6 22:22

回復 5# blue2263


    可以附上您的檔案看看嗎?
也比較方便拿實際案例來測試及除錯。
作者: blue2263    時間: 2018-9-8 01:42

回復 6# faye59

[attach]29365[/attach]

F大大您好,不好意思,再麻煩你了,謝謝!!
作者: 准提部林    時間: 2018-9-8 09:20

Public xTime  '設為共用變數, 放在記憶中可供其它程序存取

Sub 每分迴圈()
xTime = TimeSerial(Hour(Time), Minute(Time) + 1, 0)
Application.OnTime xTime, "每分迴圈"
With ThisWorkbook.Worksheets("工作表1")
    .Cells(1, 1) = .Cells(1, 1) + 1
End With
End Sub

Sub 停止執行()
On Error Resume Next  '(略過錯誤) 若預訂執行的程式已不存在, 不發生錯誤
Application.OnTime xTime, "每分迴圈", Schedule:=False  '取消預訂執行程序
On Error GoTo 0
End Sub


如果預訂執行的程序有很多個, 則 [預訂時間] 變數 須用其他變數或物件存效, 再逐一取消
作者: blue2263    時間: 2018-9-8 14:15

回復 8# 准提部林

了解了,謝謝准大解答!!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)