返回列表 上一主題 發帖

[發問] 請問該如何自動記錄加總

回復 10# leefing

DDE連結變動,只能觸發 Worksheet_Calculate事件
學海無涯_不恥下問

TOP

除了使用 Worksheet_Calculate事件
還有一個 SetLinkOnData 方法

TOP

回復 11# Hsieh


    所以只要把change改成Calculate,   這樣就可以了嗎?

TOP

回復 12# kobo

K大,SetLinkOnData這個方法,在EXCEL說明 並不太清楚(小弟不太懂上面的意思),是不是要做大改造了??

TOP

回復 12# kobo

EXCEL中是利用Worksheet_Calculate事件
透過SetLinkOnData 方法來驅動所要執行的程序
所以還是透過Calculate來捕捉DDE的改變
學海無涯_不恥下問

TOP

本帖最後由 leefing 於 2012-2-11 00:15 編輯

回復 11# Hsieh

H大,我大概寫好了,有接一下DDE  會跳動,可以幫我看看怎樣才會完美或者 最佳
  1. Private Sub Worksheet_Calculate()
  2. Dim buy As Integer
  3. Dim short As Integer

  4. If Range("J2") >= 10 Then
  5. short = Range("Y2") '空
  6. buy = Range("X2") '多
  7.     If (Range("F2") = Range("D2")) Then     '成交=買進  記在空
  8.         Range("Y2") = Range("J2") + short
  9.     End If
  10.     If (Range("F2") = Range("E2")) Then     '成交=賣出 記在多
  11.         Range("X2") = Range("J2") + buy
  12.     End If
  13.     If (Range("F2") > Range("D2")) And (Range("F2") > Range("E2")) Then
  14.         Range("X2") = Range("J2") + buy '成交大於買進和賣出   記在多
  15.     End If
  16.     If (Range("F2") < Range("D2")) And (Range("F2") < Range("E2")) Then
  17.         Range("Y2") = Range("J2") + short '成交小於買進和賣出  記在空
  18.     End If
  19. End If
  20. End Sub
複製代碼
那我隔天要重新計算,那要怎麼釋放? 寫一個按鈕 點歸零嗎?

TOP

本帖最後由 Hsieh 於 2012-2-11 23:55 編輯

回復 16# leefing
我只有yeswin試用版
假設[J12]的DDE連結公式=YES|DQ!EXFB2.Volume
提供你測試看看
在Sheet1模組增加Worksheet_Calculate程序
  1. Private Sub Worksheet_Calculate()
  2. ThisWorkbook.SetLinkOnData "YES|DQ!EXFB2.Volume", "Catch_DDE"
  3. End Sub
複製代碼
在一般模組
  1. Sub Catch_DDE()
  2. MsgBox "J1數值變動"  '此行測試是否J12的DDE更新,可取消
  3. With Sheet1
  4. If .[J12].Value >= 10 Then
  5.    If .[D12] = .[F12] Then .[U12] = .[U12] + .[J12]
  6.    If .[E12] = .[F12] Then .[T12] = .[T12] + .[J12]
  7. End If
  8. End With
  9. End Sub

  10. Sub Auto_Open() '開檔時自動執行
  11. With Sheet1
  12. .[U12:T12] .ClearContents
  13. End With
  14. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 17# Hsieh


    H大,開啟EXCEL的時候,
If .[J12].Value >= 10 Then
這一行,出現資料型態不符,是因為沒有定義嗎?
我把它按偵測,然後關閉,再按開始巨集,就可以開始運作了。

TOP

回復 18# leefing
這可能是開啟檔案時,DDE還沒連上時,[J12]出現#N/A的錯誤所致
Sub Catch_DDE()
MsgBox "J1數值變動"  '此行測試是否J12的DDE更新,可取消
With Sheet1
If IsError(.[J12]) Then Exit Sub
If .[J12].Value >= 10 Then
   If .[D12] = .[F12] Then .[U12] = .[U12] + .[J12]
   If .[E12] = .[F12] Then .[T12] = .[T12] + .[J12]
End If
End With
End Sub
學海無涯_不恥下問

TOP

回復 19# Hsieh


    H大,
If IsError(.[J12]) Then Exit Sub
這一行 怎麼加不上去,出現編譯錯誤:  必須是:陳述式結尾。
then出現黃底

先開軟體再開EXCEL  也會出現型態的問題, 是因為DDE連的沒有EXCEL快嗎?(一開始的時候)

TOP

        靜思自在 : 世上有兩件事不能等:一、孝順 二、行善。
返回列表 上一主題