返回列表 上一主題 發帖

excel VBA calculate 的疑問

回復 29# GBKEE


大哥
我覺得應該是DDE的問題, 應該不是程式的問題
因為即使是現在我打開檔案
所有數字都沒有改變的情況之下(公式當然也沒有變)
關掉檔案
EXCEL都會出現==> 檔案已被修改過, 你是否要儲存檔案的msgbox

所以我猜即使都沒有變的情況之下
DDE還是有動作
我猜是一打開檔案
EXCEL就會去抓DDE的資料
所以即使數字沒有變
但是對EXCEL來說
卻是重新抓的
excel VBA 好難喔...

TOP

<DDE工作表資料例>
20130516-01.JPG

<工作表事件區.程式碼>
Private Declare Function PlaceOrderVB Lib "TC_Excel_Addin.xll" (ByVal OrderInfo As String) As String
Option Explicit

Private Sub Worksheet_Calculate()
Dim tmpResult As String
Dim OrderInfo_1 As String
If Date Mod 7 - 1 > 5 Then Exit Sub   '今天為〔周六.周日〕非交易日.跳出
If Time < TimeValue("08:00:00") Then Exit Sub   '未到開盤.跳出
If Time > TimeValue("13:45:00") Then Exit Sub   '已過收盤.跳出
If [D5] = "已送單" And [D6] = Date Then Exit Sub   '今天已有送單記錄.跳出
If IsError([D4]) Then Exit Sub    'DDE未正確連結,或公式有誤.跳出
If Val([D4]) < 0 Then Exit Sub   '未達目標價.跳出
On Error GoTo 901    '程式執行錯誤時,強制跳至901行,以回復事件觸發,並跳出
'-------------------------------------------
Application.EnableEvents = False
OrderInfo_1 = "" ' 裡面是個資, 下單的設定
tmpResult = PlaceOrderVB(OrderInfo_1)
PlaceOrderVB (OrderInfo_1)
[D5] = "已送單" '送單訊息
[D6] = Date  '送單日期
[D7] = Time  '送單時間
901: Application.EnableEvents = True
End Sub

<備註>
以工作表事件進行DDE動態監視,並不太好掌控,之前有寫過幾個範例,是以〔每秒〕遞迴主程式監視及記錄數據,
可至敝部落格,或網頁搜尋關鍵字〔准提部林 金千里 DDE〕參考相關下載檔(程式碼公開,且有註解),
個人並無操作股票及其它金融商品,也從未使用過DDE,僅憑揣摸寫程式,所以請自行套用,無法做私人的服務。
爾後若有時間.或許也在這論壇建個〔自動記錄DDE〕題分享!

以上純因版主一句〔VBA好難〕,應緣而發! 祝 操作順利

TOP

        靜思自在 : 犯錯出懺悔心,才能清淨無煩惱。
返回列表 上一主題