- 帖子
- 48
- 主題
- 8
- 精華
- 0
- 積分
- 60
- 點名
- 0
- 作業系統
- windows7
- 軟體版本
- office2010
- 閱讀權限
- 20
- 註冊時間
- 2013-4-9
- 最後登錄
- 2019-12-17
|
- Function mainFunc3(sSheetName As String) As Long
- Dim i As Long
- With Sheets(sSheetName)
- i = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
- .Cells(i, "A") = Format(Time, "Hh:Mm:Ss") 'ROW A,記錄時間
- .Cells(i, "E").Resize(, 3).Value = .Cells(3, "B").Resize(, 3).Value 'B3-D3複製到E4-G4
- End With
- mainFunc3 = i '回傳當前列數
- End Function
- Sub ButtonStart3() '開始按鈕
- If gbIsRunning1 = True Then
- If MsgBox("已有排程:" & gNextRunTime1 & ",是否重新紀錄?", vbOKCancel) = vbOK Then
- ButtonStop3
- Else
- Exit Sub
- End If
- End If
-
- With ActiveSheet
- .Range("A4:G270").ClearContents
- gbIsRunning1 = True
- SetTimer3 .Name
- End With
- End Sub
- Sub ButtonStop3(Optional sSheetName As String) '停止按鈕
- gbIsRunning1 = False
- On Error Resume Next
- Application.OnTime gNextRunTime1, "'SetTimer3 """ & IIf(sSheetName <> "", sSheetName, ActiveSheet.Name) & """'", , False
- On Error GoTo 0
- End Sub
- Sub SetTimer3(sSheetName As String)
- Const MAX_ROW = 40
- gNextRunTime1 = Now + TimeValue("00:00:30")
- Application.OnTime gNextRunTime1, "'SetTimer3 """ & sSheetName & """'"
- If mainFunc3(sSheetName) >= MAX_ROW Then ButtonStop3 sSheetName '執行並回傳row
- End Sub
這是 stillfish00 大大教我的程式碼,可以每30秒記錄DDE 所變動的數字
可是有時候因為某些關係(我自己也沒有注意到時),這個每30秒記錄的動作,突然間自己停止了。
因為就是沒有注意到,所以等到我發現時,已經錯失約10幾分鐘的記錄。
因此,想請教各位,如何利用 msgbox 來告知我,這個儲存的動作停止了呢?
我是想過是不是可以利用 儲存的時間 和 now() 去比對,若已經相差30秒了,卻沒有新的記錄,就用 msgbox 通知我。
請問,這樣可行嗎?還有有沒有什麼程式碼可以參考呢?
謝謝各位的幫忙和指教,謝謝。 |
|