返回列表 上一主題 發帖

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

回復 10# leefing

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

TOP

回復 12# kobo

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

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

回復 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

回復 20# leefing

本人並無DDE實際經驗,依據kobo的經驗
直接於開檔與關檔使用SetLinkOnData方法就可達到自動化了
  1. Sub Catch_DDE()
  2. '單量10,然後成交=買進,所以"空"下面那一格出現10
  3. If IsError([J12]) Then Exit Sub  '單量連結錯誤就停止計算
  4. If [J12] >= 10 Then  '單量10以上執行
  5.    If [D12] = [F12] Then [U12] = [U12] + [J12]
  6.    If [E12] = [F12] Then [T12] = [T12] + [J12]
  7. End If
  8. End Sub

  9. Sub auto_open()
  10. ThisWorkbook.SetLinkOnData "YES|DQ!EXFB2.Volume", "Catch_DDE"  '啟動SetLinkOnData方法
  11. End Sub

  12. Sub auto_close()
  13. ThisWorkbook.SetLinkOnData "YES|DQ!EXFB2.Volume", ""   '關閉SetLinkOnData方法
  14. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 人要自愛,才能愛普天下的人。
返回列表 上一主題