Board logo

標題: [發問] 自動記錄欄位 [打印本頁]

作者: kong    時間: 2010-5-10 22:16     標題: 自動記錄欄位

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

我希望能得到:

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

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

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

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

希望有高手能幫忙解決這問題,感激不盡
作者: Hsieh    時間: 2010-5-10 22:21

重點是A1的值是怎樣獲得及更新的
作者: kong    時間: 2010-5-11 14:47

完成了

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 連結
作者: Hsieh    時間: 2010-5-11 17:28

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

DDE連結只會觸發Worksheet_Calculate事件
作者: kong    時間: 2010-5-12 13:58

請教一下會的人,如果 A1 是用DDE連結更新的,這樣應該怎麼寫?
作者: luhpro    時間: 2010-5-12 22:30

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

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

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

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

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

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

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

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

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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)