- 帖子
- 1018
- 主題
- 15
- 精華
- 0
- 積分
- 1058
- 點名
- 0
- 作業系統
- win7 32bit
- 軟體版本
- Office 2016 64-bit
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2012-5-9
- 最後登錄
- 2022-9-28
|
23#
發表於 2013-9-11 17:14
| 只看該作者
回復 22# ahsiek
因為原本code中stop的機制,不是立即停止的,而是下次排程的時間到了才去判斷到該變數,不讓它有再下一次的排程。
所以原本設1秒,只要按停止後的一秒內不再重新開始就不會有問題,而現在時間拉長的話就有問題了。。。
可以參考修改如下看看,mainFunc() 不變:- Private gNextRunTime1 As Date
- Private gbIsRunning1 As Boolean
- Sub ButtonStart1() '工作表開始按鈕
- '防止多次啟動
- If gbIsRunning1 = True Then
- If MsgBox("已有存在的排程:" & gNextRunTime1 & ",是否取消該排程,重新紀錄?", vbOKCancel) = vbOK Then
- ButtonStop1
- Else
- Exit Sub
- End If
- End If
-
- With ActiveSheet
- .Range("A4:G270").ClearContents
- gbIsRunning1 = True
- SetTimer1 .Name
- End With
- End Sub
- Sub ButtonStop1() '工作表停止按鈕
- gbIsRunning1 = False
-
- On Error Resume Next
- '取消下次執行時間
- Application.OnTime gNextRunTime1, "'SetTimer1 """ & ActiveSheet.Name & """'", , False
- On Error GoTo 0
- End Sub
- Sub SetTimer1(sSheetName As String)
- Const MAX_ROW = 270
-
- gNextRunTime1 = Now + TimeValue("00:00:10")
- Application.OnTime gNextRunTime1, "'SetTimer1 """ & sSheetName & """'"
-
- If mainFunc(sSheetName) >= MAX_ROW Then ButtonStop1 '執行並回傳row
- End Sub
複製代碼 |
|