返回列表 上一主題 發帖

[分享] 分享的定時抓DDE資料程式碼,但是需要人指點迷津

回復 1# handsometrowa
  1. Option Explicit
  2. Dim T1 As Date
  3. Const 開始 = "08:45:05"
  4. Const 結束 = "13:46:08"
  5. Const 週期1 = "12:00:10 AM"
  6. '******************************
  7. '常數可直接設為時間
  8. 'Const 開始 = #8:45:05 AM#
  9. 'Const 結束 = #1:46:08 PM#
  10. 'Const 週期1 = #12:00:10 AM#   '10分鐘
  11. '***************************
  12. Sub start()
  13. Call StopTimer
  14. Call Timer1
  15. End Sub
  16. Sub StopTimer()
  17. On Error Resume Next
  18. Application.OnTime T1, "Timer1", , 0
  19. T1 = Now
  20. '************************
  21. '建議改為 Time(時間)
  22. 'T1 = Time
  23. '***********************
  24. End Sub
  25. Sub Timer1()
  26. '*********************
  27. '依序只執行最先成立的條件,如後面有成立的條件是不會執行的.
  28. 'If 條件=True Then
  29. '    執行程式碼
  30. 'ElseIf 條件=True Then
  31. '    執行程式碼
  32. 'Else             '所有條件都不成立
  33. '    執行程式碼
  34. 'End If
  35. '**********************
  36. If T1 Then  ' T1> 0 -> T1 = True ,T1= 0 -> T1= False
  37.     Sheets("台指").Range("B6000").End(xlUp).Offset(1, 0) = Sheets("sheet1").Range("B2")
  38.     Sheets("電指").Range("B6000").End(xlUp).Offset(1, 0) = Sheets("sheet1").Range("B4")
  39.     Sheets("金指").Range("B6000").End(xlUp).Offset(1, 0) = Sheets("sheet1").Range("B6")
  40. End If
  41. '******************
  42. 'T1 =函數(參數1,參數2,參數3,參數4)傳回的數值
  43. '******************
  44. T1 = TimeNext(開始, 結束, 週期1, Now)  '建議 Now (日期+時間)  改為 Time (時間)
  45. If T1 Then Application.OnTime T1, "Timer1"
  46. End Sub
  47. Function ATimeNext(TStart As String, TEnd As String, TFrequency As String, TNOW As Date)
  48.    'Int(TNOW)->去掉小數(時間) 傳回日期
  49.    If TNOW < Int(TNOW) + TimeValue(TStart) Then  'TNOW > 日期+時間
  50.         TimeNext = Int(TNOW) + TimeValue(TStart)
  51.        ' imeNext > 日期+時間
  52.     ElseIf TNOW >= Int(TNOW) + TimeValue(TEnd) Then
  53.        TimeNext = 0
  54.     Else
  55.         TimeNext = Int((TNOW + TimeValue(TFrequency) + 0.5 / 86400) / TimeValue(TFrequency)) * TimeValue(TFrequency)
  56.          '86400秒 = 24(小時) * 60(分鐘) * 60(秒)
  57.     End If
  58. End Function
  59. '***********************************************
  60. '常數直接設為時間 'TNOW 改為 Time(時間)
  61. 'T1 = TimeNext(開始, 結束, 週期1, Time)
  62. '函數參數的型態須修改
  63. Function TimeNext(TStart As Date, TEnd As Date, TFrequency As Date, TNOW As Date) '改為 Time(時間)
  64.     If TNOW < TStart Then
  65.         TimeNext = TStart
  66.     ElseIf TNOW >= TEnd Then
  67.        TimeNext = 0
  68.     Else
  69.         TimeNext = Time + TFrequency
  70.     End If
  71. End Function
  72. '***********************************************
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 能幹不幹,不如苦幹實幹。
返回列表 上一主題