返回列表 上一主題 發帖

[發問] 我也想問DDE利用Private Sub Worksheet_Calculate()取資料方式

本帖最後由 luhpro 於 2011-7-27 21:02 編輯
每行D E F G
皆需要與上行D E F G比較值大小
(因為每行都會根據tr往下排序)
比較完後 根據判斷式輸出文字"+" or "-"
albertbug 發表於 2011-7-27 18:47


你的意思是指要顯示該儲存格數值與上一次數值間的增減方向嗎?
一般來說可以採用 4 個變數(即最近開始價、最高價、最低價與結束價)來儲存最新的數值,
然後於每次更新儲存格數值時就與其做比較並加上 +、- 號,
當然別忘了將新值再度賦予(更新)至該變數.

之所以建議採用此方式是因為發現你的例子中會有空白格子出現,
所以不適合直接去比較目前儲存格的 "上一個" 格子內容.

加的方式應該不困難,
你可以試著實做看看.
另外個人建議你可以考慮將開始時間與結束時間放在該列的左邊(B欄與C欄),
在D29 ~ G29 加上 開始價、最高價、最低價與結束價 等欄位名稱,
這樣應該會更容易判讀盤勢變化或是用來製作圖表.

TOP

回復 10# albertbug
If Range("D" & Tr) = "" Then Range("D" & Tr) = Range("C2")  '開始價
            I = Range("D" & Tr) - Range("D" & Tr).Offset(-1)      ' - 上一列         
            Msg = ""
            If I > 0 Then Msg = "+"                  '
            If I < 0 Then Msg = "-"
            Range("??" & Tr) = Msg                                    '?? 你要放的欄位自己設
            If Range("E" & Tr) = "" Or Range("C2") > Range("E" & Tr) _
                Then Range("E" & Tr) = Range("C2")                      '最高價
            I = Range("E" & Tr) - Range("E" & Tr).Offset(-1)
            Msg = ""
            If I > 0 Then Msg = "+"
            If I < 0 Then Msg = "-"
           Range("??" & Tr) = Msg

TOP

本帖最後由 albertbug 於 2011-7-28 18:09 編輯

感謝luhpro大大的建議
我會自己嘗試撰寫的
並且補上些中文說明
主要當初沒補上是因為想說想把主架構VBA學會  
感謝建議


感謝GBKEE大大
由於下班後使用MAC os沒裝Office
明日會在研究此些程式碼 感謝
原來主要要使用.Offset(-1)
感謝

TOP

各位大大  判斷已經沒有問題囉
但是又來請問
假若相同的 Worksheet_Calculate
裡面可以計算加法嗎

ex 我有匯出一筆數字(成交量)
但是他每改變一次  我就累積累加起來 一樣五分鐘後換行
此加法是需要額外寫一個Sub計算
還是相同一個也可以???

不好意思  一直問問題 感謝大大指正

TOP

        靜思自在 : 要批評別人時,先想想自己是否完美無缺。
返回列表 上一主題