返回列表 上一主題 發帖

excel VBA calculate 的疑問

回復  Hsieh

大哥
我用你建議的方式試了一下
有一個問題
打開檔案時會執行一次自動送單
然後會出現 ...
shy 發表於 2013-5-12 16:53


都會送出兩次單...
excel VBA 好難喔...

TOP

都會送出兩次單...
shy 發表於 2013-5-12 17:00



如果是開啟檔案
那麼都會送出兩次單...
但是之後按執行或儲存格改變的話
就又只執行一次..
excel VBA 好難喔...

TOP

本帖最後由 GBKEE 於 2013-5-12 19:28 編輯

回復 18# shy
   Q: 就是不管Range("D4") 是不是>=0 都會自動送單
是我程式沒寫好
17# 30.    ElseIf Range("D4") > 0 And Msg(2) = False Then  '符合條件一次=> 只執行一次
    須改為   ElseIf Range("D4") < 0 And Msg(2) = False Then  
Q:你有需要說明書嗎?
   去瀏覽一下寫的很清楚:  使用Excel收取委託回報,使用Excel查詢帳務 兩節  不是你問的問題嗎!!!

回復 22# shy
只要工作表中的儲存格有公式:例 =A1+C1,且這工作表模組有Sub Worksheet_Calculate()程序
檔案開啟後,每一工作表的 Sub Worksheet_Calculate()程序,都會執行一次
  1. Private Sub Worksheet_Calculate() '活頁簿中每一工作表的重算事件中
  2.     Stop  '請加上後存檔,再開檔案
  3.    '***程式執行到此 可按 F8 一行,一行..的執行程式碼試試看.********
  4.    '程式碼....
  5.     '程式碼....
  6.     '程式碼....
  7.     '程式碼....

  8. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 20# shy
以上程式碼以邏輯來看,開啟檔案會執行重算沒錯,會觸發Worksheet_Calculate程序
在程序內判斷D4是否符合條件而判斷是否執行送單動作
接下來當DDE收到更新後都會觸發Worksheet_Calculate
但是,若D4結果不符合條件也不該有送單動作
而且每次送單後都應該會出現對話方塊才對
實在看不出哪個環節出錯?
學海無涯_不恥下問

TOP

回復 24# Hsieh

GBKEE & Hsieh 大哥
目前除了一開啟檔案會送單兩次外
(符合條件會自動送單兩次, 不符合條件就沒有動作...)

其他基本上都沒有問題了
程式的運作
DDE報價跳動==>符合條件==> 自動送單
                                    不符合條件==> 就沒有動作

接下來小妹開始以這個為基礎
開始更進一步的寫作....
非常感謝你們..
excel VBA 好難喔...

TOP

回復 25# shy

可以再請教兩個問題嗎
就是只想一開盤只交易一次
之後不管不管符不符合條件
都不在執行自動下單

原因是這樣的
我在測試DDE送單的速度時
發現一件事情
如果儲存格分別是==> 今日開盤價和昨日收盤價
照道理當開盤開之後就會不動了
但是EXCEL還是一直在執行
例如
今日開盤100, 昨日收盤99 ==> 今開-昨收>=0==>符合條件==>執行送單
但之後理論上應該不會再執行送單了
因為這兩個儲存格的值已經不會再動了
但實際狀況卻是一直送單
我猜這是DDE的問題
所以才想乾脆只執行一開盤的那一次
之後不管符合不符合都不再動作

第二個問題是
我發現送單的時間很規律
都是間隔20秒
照理說
DDE若是每秒都會跳動的話
不是應該只間隔1秒嗎
間隔20秒會是EXCEL的問題嗎
若是我想改成間隔1秒的話
是不是可以在EXCEL上面改呢??
excel VBA 好難喔...

TOP

回復 26# shy
基本概念:工作表上的DEE公式變動一次,執行Sub Worksheet_Calculate() 一次.

Q 但是EXCEL還是一直在執行              ->股市營業中 : 工作表上的DEE公式會有變動對嗎?

Q 但之後理論上應該不會再執行送單了      ->工作表上的DEE公式有一個以上對嗎?

Q 間隔20秒會是EXCEL的問題嗎?              ->股市營業中,會每秒每分都有交易嗎?
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 27# GBKEE

Q 但是EXCEL還是一直在執行              ->股市營業中 : 工作表上的DEE公式會有變動對嗎?

工作表上的DDE公式不會有變動, 但是可以確定是EXCEL卻是持續執行.

Q 但之後理論上應該不會再執行送單了      ->工作表上的DEE公式有一個以上對嗎?

工作表上每個儲存格都只有對應一個DDE公式

Q 間隔20秒會是EXCEL的問題嗎?              ->股市營業中,會每秒每分都有交易嗎?

期貨的話, 每秒都會有交易...
excel VBA 好難喔...

TOP

回復 28# shy
基本概念:工作表上的公式傳回的數值變動一次,執行Sub Worksheet_Calculate() 一次.
你說工作表上的DDE公式不會有變動: 是公式沒變動,且公式傳回的數值也都不變嗎? (那股市在營業時間中有在交易嗎?)
你說工作表上每個儲存格都只有對應一個DDE公式? 那這工作表上不是有許多儲存格有公式嗎?(不只一個公式對嗎)

17# 的程式碼已修正好,再試一次看看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 29# GBKEE

工作表上只有3個儲存格有數字
今日開盤價    昨日收盤價
還有一個儲存格為 今日開盤價-昨日收盤價

所以一開盤之後
數字還有公式就都不會變了....
excel VBA 好難喔...

TOP

        靜思自在 : 【停滯不前,終無所得】人都迷於尋找奇蹟,因而停滯不前;縱使時間再多、路再長,也了無用處,終無所得。
返回列表 上一主題