返回列表 上一主題 發帖

[發問] 如何用vba製作動作停止的提示告知

[發問] 如何用vba製作動作停止的提示告知


  • 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 通知我。

請問,這樣可行嗎?還有有沒有什麼程式碼可以參考呢?

謝謝各位的幫忙和指教,謝謝。

  • Function mainFunc3(sSheetName As String) As Long

  •   Dim i As Long

  •   With Sheets(sShe ...
    ahsiek 發表於 2013-11-14 10:26


  • 數值記錄.rar (337.91 KB) 問題發生在 CC 工作表裡

    TOP

    回復 2# ahsiek
    ButtonStop3 內加msgbox

    TOP

    回復 3# stillfish00
       
        請問,我這樣寫出現了問題,我該怎麼改才好。

       If ButtonStop3 = True Then MsgBox (" 動作已停止")
       End If

       謝謝。

    TOP

    回復 4# ahsiek
    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
      MsgBox (" 動作已停止")
    End Sub

    TOP

    回復 5# stillfish00


        謝謝,我試試看,因為這兩天又不會突然停止儲存的動作。看看之後若有出現突然停止的情形時,msgbox會不會出現通知我。
        真的很謝謝 stillfish00 的幫忙。

    TOP

    回復 3# stillfish00

    stillfish00大大,又出現突然停止動作的情形了,且也沒有出現msgbox告訴我動作停止。
    平常若到達指定的列數時,動作停止時,msgbox 是會跳出來,所以這個程式碼是沒有問題的。
    我在猜有可能是開啟其他活頁簿或是什麼動作時,讓程式停了下來,可我真的找不出原因。
    因為發現程式停止時,已經是一個小時以後了…

    我想問說,有沒有什麼程式碼可以每一分鐘檢查一次,看看程式有沒有在作儲存動作呢?
    非常謝謝。

    TOP

            靜思自在 : 一句溫暖的話,就像往別人身上灑香水,自己會沾到兩三滴。
    返回列表 上一主題