返回列表 上一主題 發帖

excel VBA calculate 的疑問

excel VBA calculate 的疑問

儲存格A1 會從外部接收資料 (DDE接收開盤價)
例如 台積電開盤價
我設定一個目標 (100元)
如果當天開盤>=100
就會執行送單

我GOOGLE了一下
網路上都是教使用 calculate 和change這兩個指令
因為接收外部資料
所以只能使用calculate

但我試了一下
發現兩個問題
1. 就是我主動改A1(改為101)的值, 並不會主動送單, 而是要從VB裡面按執行才會送出單子.

2. 一旦按了執行, 就會一直送單送個不停, 有沒有辦法設定成A1變動1次, 送單1次呢??
excel VBA 好難喔...

回復 2# GBKEE
昨天試了幾次
發現還是不行
我後來發現是我問的不好
我重新問我的問題好了


儲存格A1 會從外部接收資料 (DDE接收開盤價)
例如 台積電成交價
假設儲存格B1是昨日收盤價(DDE接收收盤價)
如果當天成交價大於收盤價
就會執行送單

但是我寫出來的程式
都要用人工去按執行
沒有辦法自動
我GOOGLE了一下
網路上都是教使用 calculate 和change這兩個指令
因為接收外部資料
所以只能使用calculate

但我試了一下
發現兩個問題
1. 我是利用C1=A1-B1
     if C1 >0 Then 執行
     然後回到sheet1, 發現C1>0的時候不會自己動
     一定要回到VB裡面按執行, 但按了執行, 就會一直送單送個不停, 有沒有辦法設定成C1變動1次, 只執行1次呢??

2.  我用了
     Application.EnableEvents = False
    雖然不會一直執行動作
    但是回到sheet1, 發現C1>0 的時候還是不會自己動作
    難道要用change這個指令嗎? (但C1是公式阿...)
    但是用了change
    會出現一個狀況
    就是每次按執行
    就會出現巨集的框框出來....
excel VBA 好難喔...

TOP

本帖最後由 shy 於 2013-5-9 11:19 編輯

回復 4# GBKEE

我沒有辦法上傳檔案
好怪喔

我貼我寫的

        A                 B                   C                  D
1   代碼           商品            成交            昨收
2   2330          台積電           115.5           114.5
3                       
4                                                                             1

我打在this workbook

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
tmpResult = ""

OrderInfo_1 = "" ' 裡面是個資, 下單的設定
tmpResult = PlaceOrderVB(OrderInfo_1)
MsgBox tmpResult

Application.EnableEvents = False

If Range("D4") >= 0 Then
PlaceOrderVB (OrderInfo_1)

End If


End Sub
excel VBA 好難喔...

TOP

回復 6# GBKEE

我知道要這樣上傳阿
但是按了上傳後
會出現
對不起,不支持上傳此類擴展名的附件。
這樣的字...
excel VBA 好難喔...

TOP

回復 6# GBKEE

變成這樣??
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
tmpResult = ""

OrderInfo_1 = "" ' 裡面是個資, 下單的設定
tmpResult = PlaceOrderVB(OrderInfo_1)
MsgBox tmpResult

Application.EnableEvents = False

If Range("D4") >= 0 Then
PlaceOrderVB (OrderInfo_1)

End If

Application.EnableEvents =ture

End Sub
excel VBA 好難喔...

TOP

本帖最後由 shy 於 2013-5-9 12:53 編輯

回復 9# GBKEE

sorry
是true才對

所以是這樣??

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
tmpResult = ""

OrderInfo_1 = "" ' 裡面是個資, 下單的設定
tmpResult = PlaceOrderVB(OrderInfo_1)
MsgBox tmpResult

Application.EnableEvents = False

If Range("D4") >= 0 Then
PlaceOrderVB (OrderInfo_1)

End If

Application.EnableEvents =true

End Sub


還是不會自己動....
excel VBA 好難喔...

TOP

回復 11# GBKEE

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



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

TOP

回復 14# GBKEE


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

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


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

TOP

回復  GBKEE


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

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


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

TOP

回復 17# GBKEE


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

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

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

TOP

        靜思自在 : 為自己找藉口的人永遠不會進步。
返回列表 上一主題