返回列表 上一主題 發帖

執行時間問題?

執行時間問題?

各位大大:
附件的EXCEL我設定在8:45~13:45間執行
但每次在8:45前執行  以等待8:45開始記錄  但去都無法啟動程式紀錄
都必須等8:45後執行  程式才會啟動記錄!不知問題出在哪兒?
懇請版上大大協助修正

謝謝

感恩

量.rar (12.12 KB)

If (TimeValue(Now) <= TimeValue("08:45:00") Or TimeValue(Now) >= TimeValue("13:45:00")) Then Exit Sub '營業時間才執行
若在8:45前或13:45以後即離開程式

TOP

If (TimeValue(Now) = TimeValue("13:45:00")) Then Exit Sub '營業時間才執行
若在8:45前或13:45以後即離 ...
ANGELA 發表於 2012-6-7 20:05

Dear這我能理解
但問題是我在8:44執行程式後  過了8:45卻沒動作啊?
想問是甚麼原因和如何修正?

謝謝  感恩

TOP

回復 3# mead
因為在8:45以前開檔,雖然有執行一次Timer
但因為直接跳出程序,並未準備下一次執行Timer
判斷式改一下
  If TimeValue(Now) <= TimeValue("08:45:00") Then Application.OnTime Now + TimeValue("00:00:01"), "Timer"
  If TimeValue(Now) >= TimeValue("13:45:00") Then Exit Sub '營業時間才執行
學海無涯_不恥下問

TOP

回復  mead
因為在8:45以前開檔,雖然有執行一次Timer
但因為直接跳出程序,並未準備下一次執行Timer
判 ...
Hsieh 發表於 2012-6-7 20:28

感謝總版主的指導
但照此修改  還是不行!
過了設定時間沒動作  退出再進入  即變成隨時在記錄了!
麻煩再指導

謝謝  感恩

TOP

回復 5# mead
  1. Sub Timer()

  2. Dim HHMMSS As Integer

  3. On Error Resume Next

  4. ' Sheets("策略記錄").Select

  5. Sheets(2).Cells(2, 1) = Time '將時間show至策略的a2欄位

  6.   If (TimeValue(Now) <= TimeValue("08:45:00") Or TimeValue(Now) >= TimeValue("13:45:00")) Then GoTo 10 '營業時間才執行

  7. ' If Minute(Time) <> LastMin Then '開始後做

  8.     i = i + 1

  9.     If i = 60 Then


  10. Sheets(2).Range("a10000").End(xlUp).Offset(1, 0) = Time

  11. Sheets(2).Range("a10000").End(xlUp).Offset(0, 1) = O

  12. Sheets(2).Range("a10000").End(xlUp).Offset(0, 2) = H

  13. Sheets(2).Range("a10000").End(xlUp).Offset(0, 3) = L

  14. Sheets(2).Range("a10000").End(xlUp).Offset(0, 4) = C

  15.   

  16. Sheets(2).Range("a10000").End(xlUp).Offset(0, 5) = O1

  17. Sheets(2).Range("a10000").End(xlUp).Offset(0, 6) = H1

  18. Sheets(2).Range("a10000").End(xlUp).Offset(0, 7) = L1

  19. Sheets(2).Range("a10000").End(xlUp).Offset(0, 8) = C1


  20. Sheets(2).Range("a10000").End(xlUp).Offset(0, 9) = O2

  21. Sheets(2).Range("a10000").End(xlUp).Offset(0, 10) = H2

  22. Sheets(2).Range("a10000").End(xlUp).Offset(0, 11) = L2

  23. Sheets(2).Range("a10000").End(xlUp).Offset(0, 12) = C2

  24.      i = 0

  25.       O = Sheets(2).Cells(2, 2)

  26.       H = Sheets(2).Cells(2, 2)

  27.       L = Sheets(2).Cells(2, 2)

  28.       C = Sheets(2).Cells(2, 2)

  29.         

  30.      O1 = Sheets(2).Cells(2, 3)

  31.      H1 = Sheets(2).Cells(2, 3)

  32.      L1 = Sheets(2).Cells(2, 3)

  33.      C1 = Sheets(2).Cells(2, 3)

  34.      

  35.      O2 = Sheets(2).Cells(2, 4)

  36.      H2 = Sheets(2).Cells(2, 4)

  37.      L2 = Sheets(2).Cells(2, 4)

  38.      C2 = Sheets(2).Cells(2, 4)

  39. Else

  40.      C = Sheets(2).Cells(2, 2)

  41.      If H = "" Then H = Sheets(2).Cells(2, 2)

  42.      If C >= H Then H = C

  43.      If C < L Then L = C

  44.      If O = 0 Then O = Sheets(2).Cells(2, 2) Else O = O

  45.      If L = 0 Then L = Sheets(2).Cells(2, 2) Else L = L

  46.    

  47.      C1 = Sheets(2).Cells(2, 3)

  48.      If H1 = "" Then H1 = Sheets(2).Cells(2, 3)

  49.      If C1 >= H1 Then H1 = C1

  50.      If C1 < L1 Then L1 = C1

  51.      If O1 = 0 Then O1 = Sheets(2).Cells(2, 3) Else O1 = O1

  52.      If L1 = 0 Then L1 = Sheets(2).Cells(2, 3) Else L1 = L1

  53.    

  54.      C2 = Sheets(2).Cells(2, 4)

  55.      If H2 = "" Then H2 = Sheets(2).Cells(2, 4)

  56.      If C2 >= H2 Then H2 = C2

  57.      If C2 < L2 Then L2 = C2

  58.      If O2 = 0 Then O2 = Sheets(2).Cells(2, 4) Else O1 = O1

  59.      If L2 = 0 Then L2 = Sheets(2).Cells(2, 4) Else L2 = L2

  60.   End If

  61.         LastMin = Minute(Time)

  62. '  End If
  63. 10
  64. Application.OnTime Now + TimeValue("00:00:01"), "Timer" '每秒顯示

  65. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復  mead
Hsieh 發表於 2012-6-7 21:51

感謝總版主這麼快回覆
剛剛測試的結果已可行
明天盤中再測試看看

謝謝總版主的熱心幫忙

感恩再感恩

TOP

回復 7# mead
關鍵在於 Application.OnTime (TimeValue("08:45:00")), "Module1.Timer"  :
  1. Private Sub Workbook_Open()
  2.     Sheets("策略記錄").[a5:n700] = ""
  3.     ' LastMin = Minute(Time)
  4.     Application.OnTime (TimeValue("08:45:00")), "Module1.Timer"      ' *********
  5. End Sub



  6. Sub Timer()
  7.     Dim HHMMSS As Integer

  8.     On Error Resume Next

  9.     ' Sheets("策略記錄").Select
  10.     Sheets(2).Cells(2, 1) = Time '將時間show至策略的a2欄位

  11.     If (TimeValue(Now) >= TimeValue("13:45:00")) Then Exit Sub  ' 超過營業時間後即跳離不予執行
  12.     .
  13.     .
  14.     .
  15.     .
  16. End Sub
複製代碼
至於 Timer 修改一下  If (TimeValue(Now) >= TimeValue("13:45:00")) Then Exit Sub
其它部分依你所需去修正。

TOP

回復  mead
關鍵在於 Application.OnTime (TimeValue("08:45:00")), "Module1.Timer"  :至於 Timer 修改 ...
c_c_lai 發表於 2012-6-8 08:07

感謝c_c_lai 大大的熱心回覆
先試試看
感恩

TOP

請教版大哥,元大easywin之DDE,要如何將之前的EXCEL存檔,隔天依樣開此檔案,要如何設定?
謝謝。
devidlin

TOP

        靜思自在 : 人生沒有所有權,只有生命的使用權。
返回列表 上一主題