返回列表 上一主題 發帖

[發問] 自動記錄欄位

[發問] 自動記錄欄位

現在的問題是在excel工作表裡,有兩個儲存格中的值是浮動,A1每日的起始值是0,值是不斷增加,A2的值則是上下浮動。

我希望能得到:

在打開excel工作表後,假設A1的值開始大於0時,就將A2的值自動儲存在B1。

之後A1的值大於100時,將A2的值自動儲存在B2。

A1的值大於200時,再將A2的值自動儲存在B3。

以下依此類推,在A1每向增加100單位時,自動將A2的值往下儲存B欄中。

希望有高手能幫忙解決這問題,感激不盡

問題應該不這裡,DDE應該視為個函數,所以不能觸發Change 事件,

正確的用法應該屬於SetLinkOnData事件,但是用那種寫法在某些條件似乎更難。
如果以Worksheet_Calculate來寫,則工作表任何單元格計算時就都會觸發這個事件。

只是Calculate事件似乎不能指定欄位,就必須加上迴圈,如果以本例應該可以做到,但是如果有幾百個儲存格要處理,那麼就會拖累整個取得資訊的完整,如果是用來做為自動下單,就相當危險。

最主要是DDE這種太過落後,看這一次Offece Professional Plus 2010 beta新出場,有沒有改變,一般會用到DDE是因為有許多的交易邏輯無法實現在TradeStation,所以將想法轉向到Excel-vba程式,結果在實際運作中的遇到的問題相當多,結果變成不僅僅要成為交易高手,自己還得了解其他領域的知識,這往往是始料未及的事,當發現DDE有許多的問題後,最後只好轉向其他的方式,反而更為輕鬆,不然只好將自己的交易想法寫在腦中的vba,就不要想要偷懶。

所以有空慢慢想,畢業人腦不是vba,以上所提也未必正確,歡迎指正。

TOP

據我所看到的實例, Excel檔中的 DDE 敘述寫法實際上要搭配提供 DDE 來源的軟體它給你哪些資料,例如 :

=XQLMNO|Quote!'1101.TW-Bid'              (台積電買進價)

=XQLMNO|Quote!'2330.TW-Price'           (台積電成交價)

有趣的是該軟體產生的 Excel 檔內所看到該儲存格的公式卻是 : {=XQLMNO|Quote!'1101.TW-Bid'}
而在編輯該儲存格時 {} 卻不見了,即使 Copy 到別個儲存格也不會產生即時更新的效果(沒有 {}),
我猜可能就是癥結所在.

TOP

請教一下會的人,如果 A1 是用DDE連結更新的,這樣應該怎麼寫?

TOP

本帖最後由 Hsieh 於 2010-5-11 22:54 編輯

DDE連結只會觸發Worksheet_Calculate事件
學海無涯_不恥下問

TOP

完成了

Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    If Target.Address = "$A$1" Then
        If IsNumeric(Range("a1").Value) = True Then
            i = (Range("a1").Value - 1) \ 100 + 1
            Range("B" & i).Value = Range("a2").Value
        End If
    End If
End Sub

可用於 Change 事件
不能用在 DDE 連結

TOP

重點是A1的值是怎樣獲得及更新的
學海無涯_不恥下問

TOP

        靜思自在 : 慈悲沒有敵人,智慧不起煩惱。
返回列表 上一主題