Board logo

標題: [發問] 巨集自動執行 [打印本頁]

作者: annie.l    時間: 2021-1-27 12:01     標題: 巨集自動執行

加工剩餘數.xlsm裡的巨集
Sub 剩餘數計算()
....
.......
........
Call 更新
End Sub

Sub 更新()
If Time <= TimeValue("19:00:00") Then   
    Application.OnTime Now + TimeValue("00:05:00"), "剩餘數計算"
  End If
End Sub

Sub 結束視窗()
Workbooks("加工剩餘數.xlsm").Close SaveChanges:=False
End Sub

如果同時開了兩個EXCEL檔 ,當只關掉"加工剩餘數.xlsm",
繼續使用另一個ECXEL檔時,系統時間到了
仍會自動開啟"加工剩餘數.xlsm"執行"剩餘數計算"

請問各位前輩,有什麼方式可以 結束視窗即不在執行程式
作者: cody    時間: 2021-1-27 23:21

https://docs.microsoft.com/zh-tw/office/vba/api/excel.application.ontime
Schedule 選用false
作者: annie.l    時間: 2021-1-28 07:56

回復 2# cody


Sub 結束視窗()
Application.OnTime EarliestTime:=TimeValue("00:00:10"), _
Procedure:="資料剝析", Schedule:=False
'Workbooks("加工剩餘數.xlsm").Close SaveChanges:=False
End Sub

是這樣寫法嗎?!  但我執行時會出現

執行階段錯誤'1004'
'OnTime'方法('_Application'物件)失敗
作者: annie.l    時間: 2021-1-28 10:18

回復 2# cody


    我找到問題了,我把解釋的單字也寫入難怪執行錯誤
    改成 Application.OnTime fireTime, "下午更新", False      就可以了   :lol :lol
作者: annie.l    時間: 2021-1-28 12:10

回復 2# cody

    Private Sub CommandButton1_Click() --寫在工作頁裡
    Call 結束視窗
     End Sub

   Sub 結束視窗()--此程式是放在"模組"裡
   Application.OnTime fireTime, "下午更新", False
  End Sub
  
   or

  Application.OnTime Now+ TimeValue("00:00:05"), "下午更新", False

   時間到了還是會自動執行  是那裡出了問題
作者: annie.l    時間: 2021-1-28 15:53     標題: RE: 巨集自動執行

回復  cody

    Private Sub CommandButton1_Click() --寫在工作頁裡
    Call 結束視窗
     End Su ...
annie.l 發表於 2021-1-28 12:10



    [attach]33011[/attach]
作者: 准提部林    時間: 2021-1-29 10:29

模組區:
public uTime '頂端宣告共用變數

Sub 剩餘數計算()
........
Call 更新
End Sub

Sub 更新()
If Time <= TimeValue("19:00:00") Then
   uTime= Now + TimeValue("00:05:00")
    Application.OnTime uTime, "剩餘數計算"
  End If
End Sub

Sub 結束視窗()
on error resume next
Application.OnTime uTime, "剩餘數計算", Schedule:=False
on error goto 0
Workbooks("加工剩餘數.xlsm").Close SaveChanges:=False
End Sub
作者: annie.l    時間: 2021-1-29 14:53

回復 7# 准提部林


    請問版大  
    on error 兩段的用意是什麼
   on error 是call結束視窗觸發的嗎?!

   Sub 結束視窗()
   on error resume next
   Application.OnTime uTime, "剩餘數計算", Schedule:=False
   on error goto 0
   Workbooks("加工剩餘數.xlsm").Close SaveChanges:=False
   End Sub
作者: 准提部林    時間: 2021-1-29 16:24

回復 8# annie.l


當下次預計執行的程序不存在, 會引發錯誤,
ON ERROR 是用來避免錯誤, 可上網找說明,
作者: annie.l    時間: 2021-1-30 23:34

回復 9# 准提部林

謝謝 我再上網搜尋




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