Board logo

標題: [發問] 為什麼沒辦法做到每五分鐘動作一次?? [打印本頁]

作者: enhrulee    時間: 2011-6-22 00:05     標題: 為什麼沒辦法做到每五分鐘動作一次??

我的sheet1有三列DDE的數據
我想把這三列數據每五分鐘分別紀錄一次到三個工作表sheet2~sheet4
偵錯都沒問題
可是卻跑一次就停了
倒底是甚麼原因呢
我在sheet1貼的程式碼如下



Private Sub Worksheet_Calculate()

Dim NowDateTime, NowTime, StartTime, StopTime
    Dim tr As String

   
    NowDateTime = Now
    NowTime = NowDateTime - Int(NowDateTime)
    StartTime = Sheet2.[A2]
    StopTime = Sheet2.[A185]
   
    If NowTime <= StartTime Then
        Exit Sub
    ElseIf NowTime > StopTime Then
        Exit Sub
    End If
   
    tr = Int((NowTime - StartTime) * 288) + 2
   
   
   
    Sheet2.Range("B" & tr).Value = Sheet1.Range("A2").Value
    Sheet2.Range("C" & tr).Value = Sheet1.Range("B2").Value
    Sheet2.Range("D" & tr).Value = Sheet1.Range("C2").Value
    Sheet2.Range("E" & tr).Value = Sheet1.Range("D2").Value
    Sheet2.Range("F" & tr).Value = Sheet1.Range("E2").Value
    Sheet2.Range("G" & tr).Value = Sheet1.Range("F2").Value


    Sheet3.Range("B" & tr).Value = Sheet1.Range("A3").Value
    Sheet3.Range("C" & tr).Value = Sheet1.Range("B3").Value
    Sheet3.Range("D" & tr).Value = Sheet1.Range("C3").Value
    Sheet3.Range("E" & tr).Value = Sheet1.Range("D3").Value
    Sheet3.Range("F" & tr).Value = Sheet1.Range("E3").Value
    Sheet3.Range("G" & tr).Value = Sheet1.Range("F3").Value

    Sheet4.Range("B" & tr).Value = Sheet1.Range("A4").Value
    Sheet4.Range("C" & tr).Value = Sheet1.Range("B4").Value
    Sheet4.Range("D" & tr).Value = Sheet1.Range("C4").Value
    Sheet4.Range("E" & tr).Value = Sheet1.Range("D4").Value
    Sheet4.Range("F" & tr).Value = Sheet1.Range("E4").Value
    Sheet4.Range("G" & tr).Value = Sheet1.Range("F4").Value

End Sub

[attach]6733[/attach]
作者: oobird    時間: 2011-6-22 15:45

程式中並沒有每五分鐘分執行一次的敘述
作者: enhrulee    時間: 2011-6-23 08:44

程式中並沒有每五分鐘分執行一次的敘述
oobird 發表於 2011-6-22 15:45



    感謝回應

原來  tr = Int((NowTime - StartTime) * 288) + 2
這一行並沒有五分換行一次的效果
想請問一下要達到五分鐘執行一次的話
程式碼該怎麼改呢
謝謝您了
作者: oobird    時間: 2011-6-23 09:17

站上有許多這類的討論,找一下吧。隨手幫你找了一個:
http://forum.twbts.com/thread-2044-1-22.html
作者: luhpro    時間: 2011-6-28 21:37

回復 3# enhrulee
你可以參考這篇 :
http://blog.xuite.net/crdotlin/excel/9016607
作者: enhrulee    時間: 2011-7-6 21:37

回復  enhrulee
你可以參考這篇 :
http://blog.xuite.net/crdotlin/excel/9016607
luhpro 發表於 2011-6-28 21:37



    感謝您的回應
我會多多研究一下的
作者: GBKEE    時間: 2011-7-7 10:44

本帖最後由 GBKEE 於 2011-7-7 10:50 編輯

回復 1# enhrulee
依據你的附檔所寫
  1. Sub AppOntime()
  2.     Dim E As Range
  3.     For Each E In Sheets("Sheet1").[A2:A184]
  4.         Application.OnTime E, "Ex "    '一般Module 不必指明
  5.         '  ****  Application.OnTime E, "Sheet1.Ex "    '物件Module 的程序須指明 物件Module
  6.     Next
  7. End Sub
  8. Private Sub Ex()   '此程序是置於一般Module
  9.     Dim Rng As Range
  10.     Set Rng = Sheets("Sheet1").Columns(1).Find(Format(Time, "H:MM:00 AM/PM"))
  11.     Sheets("Sheet1").Cells(Rng.Row, 2).Resize(1, 6) = Sheets("Sheet4").Range("A2:F2").Value
  12.     Sheets("Sheet2").Cells(Rng.Row, 2).Resize(1, 6) = Sheets("Sheet4").Range("A3:F3").Value
  13.     Sheets("Sheet3").Cells(Rng.Row, 2).Resize(1, 6) = Sheets("Sheet4").Range("A4:F4").Value
  14. End Sub
複製代碼





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