返回列表 上一主題 發帖

excel VBA calculate 的疑問

本帖最後由 GBKEE 於 2013-5-9 13:19 編輯

回復 10# shy
沒有檔案只好用猜的
Private Sub Worksheet_Calculate()  '預設工作表觸動事件:   工作表重算事件
這程序碼須是在 DEE 公式所在工作表模組中


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

TOP

回復  GBKEE

我知道要這樣上傳阿
但是按了上傳後
會出現
對不起,不支持上傳此類擴展名的附件。
這 ...
shy 發表於 2013-5-9 12:13

你必須先將相關檔案集中,然後全壓縮成 .rar (使用 Winrar.exe) 檔案,
才可以上傳 ( .rar 檔案)。

TOP

回復 11# GBKEE

大哥
這樣好像可以了
但是又有新的問題
現在變成不管有沒有符合條件
都會去執行程式
然後都會出現 msgBox "SUCDEDEDSUCEEDED"
差別只是在於有沒有自動丟單(符合就會自動丟單, 沒有符合就沒有丟單....)
我可以改成
沒有符合條件==> 不動作
有符合條件==> 執行丟單動作==> 才回傳 msgBox "SUCDEDEDSUCEEDED"



我可以請教你一個問題嗎
我這個檔案是外接DDE
你沒有我的軟體
那麼我把檔案上傳到底有甚麼意義?
因為打開後
都是#N/A, 不然就是#REF!
但是我有把我寫的程式碼弄上來阿.....
還是你有辦法解決外接DDE的問題??
excel VBA 好難喔...

TOP

回復 13# shy
Q:現在變成不管有沒有符合條件,都會去執行程式,然後都會出現 msgBox "SUCDEDEDSUCEEDED"
  1. Private Sub Worksheet_calculate()
  2.     'DEE 數值有變動 會執行此程式  ********
  3.     Dim tmpResult As String
  4.     Dim OrderInfo_1 As String
  5.     tmpResult = ""
  6.     OrderInfo_1 = "" ' 裡面是個資, 下單的設定
  7.     tmpResult = PlaceOrderVB(OrderInfo_1)
  8.     '***************
  9.     MsgBox tmpResult  '當然都會出現 msgBox "SUCDEDEDSUCEEDED"
  10.     '*************************
  11.     Application.EnableEvents = False

  12.     If Range("D4") >= 0 Then  '這是你說的 符合條件 嗎??
  13.         PlaceOrderVB (OrderInfo_1)
  14.         MsgBox tmpResult  '如果你程式碼置於此 符合條件 才會 msgBox "SUCDEDEDSUCEEDED"
  15.     End If
  16.     Application.EnableEvents = ture
  17. End Sub
複製代碼
Q 我這個檔案是外接DDE,你沒有我的軟體,那麼我把檔案上傳到底有甚麼意義?

10#  Application.EnableEvents =true  ,還是不會自己動....
10#你的回覆:對我還是唰無帳.....

11# 沒有檔案只好用猜的
     Private Sub Worksheet_Calculate()  '預設工作表觸動事件:   工作表重算事件
     這程序碼須是在 DEE 公式所在工作表模組中

請問我11#這回覆對你有幫助嗎??? 如有那把檔案上傳就不必瞎子摸象!!!
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 14# GBKEE


我把檔案傳上
大哥你在看一下.....

我希望的目標是
符合條件(>=0)=> 執行自動下單(有沒有出現msgbox沒有關係..)
不符合條件=>不要動作,也不用通知..


Book3.rar (12.23 KB)
excel VBA 好難喔...

TOP

回復  GBKEE


我把檔案傳上
大哥你在看一下.....

我希望的目標是
符合條件(>=0)=> 執行自動下單( ...
shy 發表於 2013-5-11 15:31


補充一下
符合條件一次=> 只執行一次
excel VBA 好難喔...

TOP

本帖最後由 GBKEE 於 2013-5-12 18:58 編輯

回復 16# shy
  1. Private Declare Function PlaceOrderVB Lib "TC_Excel_Addin.xll" (ByVal OrderInfo As String) As String
  2. Option Explicit
  3. Private Sub Worksheet_calculate()
  4.     'Static 陳述式  在程序層次中用來宣告變數並配置儲存空間。以 Static 陳述式宣告的變數,在程式執行期間,會一直保留內容。
  5.     'Boolean 資料型態 Boolean 變數係以 16 位元( 2 個位元組)數字的形式儲存,但只能是 True 或是 False。Boolean 變數的值不是 True 就是 False
  6.     Static Msg(1 To 2) As Boolean      '程式一開始執行時,預設值為 False
  7.     Dim tmpResult As String
  8.     Dim OrderInfo_1 As String
  9.     Application.EnableEvents = False
  10.    
  11.     '**********DEE的內容在這裡執行的用意....???
  12.     tmpResult = ""
  13.     OrderInfo_1 = "" '裡面有個資,所以沒有辦法公開
  14.     tmpResult = PlaceOrderVB(OrderInfo_1)
  15.     '***************************************
  16.    
  17.     '*********猜猜你的想法: 符合條件一次=> 只執行一次
  18.     If Range("D4") >= 0 And Msg(1) = False Then
  19.        '執行一次後:  "D4" 一直是 >= 0,不再執行直到 "D4" < 0 後在次執行
  20.         Msg(1) = True      '一直是 >= 0
  21.         Msg(2) = False     ' < 0  可執行
  22.         
  23.         '********    請看圖示   *********************
  24.         '程式執行期間,一直保留 Msg(1) = True
  25.         '除非...程式重新執行: 程式 預設值為 False
  26.         '****************************************
  27.         
  28.         PlaceOrderVB (OrderInfo_1)
  29.         ' MsgBox tmpResult    執行自動下單(有沒有出現msgbox沒有關係..)
  30.     ElseIf Range("D4") < 0 And Msg(2) = False Then  '符合條件一次=> 只執行一次
  31.         '執行一次後:  如"D4" 一直是 < 0,不再執行直到 "D4" >= 0 後在次執行
  32.         Msg(1) = False   '>= 0 可執行
  33.         Msg(2) = True    '一直是 < 0
  34.         PlaceOrderVB (OrderInfo_1)
  35.         ' MsgBox tmpResult    執行自動下單(有沒有出現msgbox沒有關係..)
  36.     End If
  37.     Application.EnableEvents = True
  38. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 17# GBKEE


大哥
我不懂你所謂的==> DEE的內容在這裡執行的用意....???
你的意思我為什麼加入==> tmpResult= ""
我也不懂阿
我是按照說明書照抄的...

我按大哥的圖照打
有一個新的問題
就是不管Range("D4") 是不是>=0 都會自動送單

大哥你有需要說明書嗎
http://www.touchance.com/download_file/broker/TOUCHANCE_Excel_操作手冊.pdf
這是網址
小妹我沒有辦法上傳
因為壓縮後大於1MB
excel VBA 好難喔...

TOP

本帖最後由 Hsieh 於 2013-5-12 15:51 編輯

回復 18# shy
TOUCHANCE說明
  1. tmpResult = PlaceOrderVB(OrderInfo)
  2. tmpResult:請宣告為String,接收函式回傳值。
  3. OrderInfo:請宣告為String,內容為下單字串。
  4. tmpResult數說明:
  5. 變數
  6. 說明
  7. tmpResult
  8. 您可以改變變數名稱,當下單失敗時會回傳一組字串存入
複製代碼
所以,不需考慮你DDE程序
你要以D4 作為下單依據
  1. Private Declare Function PlaceOrderVB Lib "TC_Excel_Addin.xll" (ByVal OrderInfo As String) As String
  2. Option Explicit

  3. Private Sub Worksheet_calculate()

  4. Dim tmpResult As String
  5. Dim OrderInfo_1 As String  '下單的參數

  6. OrderInfo_1 = "" '裡面有個資,所以沒有辦法公開
  7. '這應該是你下單的參數

  8. If Range("D4") >= 0 Then
  9. Application.EnableEvents = False
  10. tmpResult = PlaceOrderVB(OrderInfo_1) '執行你所謂的下單動作
  11. MsgBox "Run PlaceOrderVB OK!:" & tmpResult  '如果有執行就會出現此警示視窗
  12. Application.EnableEvents = True
  13. End If
  14. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 19# Hsieh

大哥
我用你建議的方式試了一下
有一個問題
打開檔案時會執行一次自動送單
然後會出現msgBox
按確定後
會再執行一次自動送單
但就不會出現msgBox了...

也就是都會執行兩次...
excel VBA 好難喔...

TOP

        靜思自在 : 要比誰更受誰.不要比誰更怕誰。
返回列表 上一主題