如果您打開VBA解決方案,則可以使用Workbook.SetLinkOnData
方法在傳入數據更改時調用Sub。
我建議只應對變化的TIME
話題,複製所有relavent數據在一個基於這個數據佈局
設置在顯示器上打開事件去
(這個地方的ThisWorkbook
模塊)
Sub Workbook_Open()
Dim wb As Workbook
Dim Links As Variant
Dim i As Long
Set wb = ThisWorkbook
Links = wb.LinkSources(xlOLELinks)
For i = LBound(Links) To UBound(Links)
If Left$(Links(i), 8) = "MT4|TIME" Then
wb.SetLinkOnData Links(i), "MT4_OnUpdate"
End If
Next
End Sub
和代碼數據處理R在作爲正常模塊
Sub MT4_OnUpdate()
' DDE Updated TIME, copy data
Dim ws As Worksheet
Dim Source As Range
Dim Dest As Range
Set ws = Worksheets("Your DDE Data Sheet")
With ws
Set Source = ws.Range("A2:E2")
Set Dest = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, Source.Columns.Count)
End With
Dest.Value = Source.Value
End Sub
這將A2:E2
複製細胞對歷史數據列表的底部,改變每次A2
(從MT4時間戳)。
注意:你在你的OP中說你想更新每毫秒。這不會發生,因爲MT4|TIME
正在返回分辨率爲1秒的DateTime序列。即使可能發生,Excel也會處理太多的數據
這真的很有幫助。我有一段時間沒有使用VBA,但我會給這個鏡頭,看看我是如何做到的。真的很感激詳細的迴應。 – user2039871
你願意爲此付費嗎?我無法讓它工作。 – user2039871
我認爲你應該堅持到現在。發表另外一個問題,一定要[遵循指導方針](http://meta.stackexchange.com/q/156810/159408),特別是發佈您嘗試過的代碼並解釋它如何不做你想做的。包含顯示輸入和輸出樣本數據的示例數據集。如果可以的話,我會幫忙的。 –