台灣最大程式設計社群網站
線上人數
846
 
會員總數:245220
討論主題:189091
歡迎您免費加入會員
討論區列表 >> office VBA / WinOS >> VBV設定時間區間抓取動態DDE資料
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
VBV設定時間區間抓取動態DDE資料
價值 : 10 QP  點閱數:1759 回應數:0

樓主

正林
門外漢
0 1
8 0
發送站內信

捐贈 VP 給 正林

各位先進 我遇到朋友給我的一個VBA程式 內容是 在台灣期貨市場開盤時 抓取資料 並且在收盤時判斷時間停止 抓取動態DDE 資料

裡面當中的流程我大致上都解開了 可是有一個函數我 怎麼想也想不通 其內容如下 為了簡單內容 我把抓資料的那個部分各陳列一條

實際上 更希望能夠有更好的寫法 不過那個容後再表

1.請問以下的整個模組 有人能夠幫我用白話文解釋流程嗎?

2.另外在Function TimeNext 的三個判斷式內

最後一個
TimeNext = Int((TNOW + TimeValue(TFrequency) + 0.5 / 86400) / TimeValue(TFrequency)) * TimeValue(TFrequency)

我怎麼想也想不通 ,也用MsgBox 來觀看函數了 我還拆解了四個步驟....但是最後呈現的 我卻完全不懂 為什麼要那樣子做?





Option Explicit

Dim T1 As Date

Const 開始 = "08:45:05"
Const 結束 = "13:46:08"
Const 週期1 = "0:0:10"

Sub start()

Call StopTimer

Call Timer1

End Sub

Sub StopTimer()

On Error Resume Next

Application.OnTime T1, "Timer1", , 0

T1 = 0

End Sub

Sub Timer1()

If T1 Then

Sheets("台指").Range("B6000").End(xlUp).Offset(1, 0) = Sheets("sheet1").Range("B2")

Sheets("電指").Range("B6000").End(xlUp).Offset(1, 0) = Sheets("sheet1").Range("B4")

Sheets("金指").Range("B6000").End(xlUp).Offset(1, 0) = Sheets("sheet1").Range("B6")

End If

T1 = TimeNext(開始, 結束, 週期, Now)

If T1 Then Application.OnTime T1, "Timer1"


End Sub

Function TimeNext(TStart As String, TEnd As String, TFrequency As String, TNOW As Date)

If TNOW < Int(TNOW) + TimeValue(TStart) Then

TimeNext = Int(TNOW) + TimeValue(TStart)


ElseIf _
TNOW >= Int(TNOW) + TimeValue(TEnd) Then

TimeNext = 0

Else

TimeNext = Int((TNOW + TimeValue(TFrequency) + 0.5 / 86400) / TimeValue(TFrequency)) * TimeValue(TFrequency)

End If

End Function

搜尋相關Tags的文章: [ EXCEL ] , [ VBA ] , [ DDE ] ,
本篇文章發表於2013-05-16 10:48
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.