返回列表 上一主題 發帖

DDE 擷取分鐘最高最低

DDE 擷取分鐘最高最低

版大您好 想請教您有關DDE取最高以及最低價格的寫法 在EXCEL表格中 B5為DDE的時間輸入 B6為DDE的價格輸入若想讓他每分鐘都能抓出最高與最低價格顯示在D8和E8欄中並依序向下  且B5時間輸入的部分是經由程式計數所顯示出來的不是經由DDE聯結 想請教一下該怎麼寫 麻煩您了 感謝您!!

本帖最後由 stillfish00 於 2013-6-21 11:20 編輯

回復 1# vzcen
沒用過DDE,僅供參考。
  1. Private gbStart As Boolean
  2. Private recTime
  3. Private recValue
  4. Private Sub Worksheet_Calculate()
  5.     Dim ddeValue
  6.    
  7.     If gbStart Then
  8.         ddeValue = [B6].Value
  9.         If IsEmpty(recValue) Then recTime = Time: recValue = ddeValue
  10.         
  11.         If Minute(recTime) = Minute(Time) Then
  12.             If ddeValue > recValue Then recTime = Time: recValue = ddeValue
  13.         Else
  14.             '紀錄時間在D欄最後一列下方
  15.             Cells(Rows.Count, "D").End(xlUp).Offset(1).Value = recTime
  16.             '紀錄價格在E欄最後一列下方
  17.             Cells(Rows.Count, "E").End(xlUp).Offset(1).Value = recValue
  18.             recTime = Time: recValue = ddeValue
  19.         End If
  20.     End If
  21.    
  22. End Sub
  23. '可建立按鈕開始或結束
  24. Private Sub StartRecordData()
  25.     gbStart = True
  26. End Sub
  27. Private Sub StopRecordData()
  28.     gbStart = False
  29.     recTime = Empty
  30.     recValue = Empty
  31. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2013-6-24 16:18 編輯

回復 1# vzcen
這DEE工作表物件的程式碼
  1. Option Explicit
  2. Private Sub Worksheet_Calculate()
  3.     Dim Rng As Range
  4.     Static Msg As Boolean    '以 Static 陳述式宣告的變數,在程式執行期間,會一直保留內容。
  5.     If Weekday(Date, vbMonday) > 5 Or Time < #9:00:00 AM# Or Time > #1:30:00 PM# Then Exit Sub  '非營業日 或 非營業時間
  6.     If Msg = False Then
  7.         清除舊資料
  8.         Msg = True
  9.     End If
  10.     With Cells(Rows.Count, "C").End(xlUp)
  11.         If .Row = 7 Then
  12.             Set Rng = .Offset(1)
  13.         Else
  14.             Set Rng = .Cells
  15.         End If
  16.     End With
  17.     If Rng = "" Or Rng.Text <> Format([b5], "hh:mm") Then
  18.         If Rng <> "" Then Set Rng = Rng.Offset(1)
  19.         Rng = Format([b5], "hh:mm")
  20.         Rng(1, 2) = [B6].Text
  21.         Rng(1, 3) = [B6].Text
  22.     ElseIf Rng.Text = Format([b5], "hh:mm") Then
  23.         If [B6] > Rng(1, 2) Then Rng(1, 2) = [B6].Text
  24.         If [B6] < Rng(1, 3) Then Rng(1, 3) = [B6].Text
  25.     End If
  26. End Sub
  27. Private Sub 清除舊資料()
  28.     On Error GoTo Er
  29.     If [營業日] <> Date Then            '檢查 定義名稱:"營業日"的值
  30.         Me.Names.Add "營業日", Date     '定義名稱:"營業日"的值為當日
  31.         If Weekday(Date, vbMonday) <= 5 Then Range([C8], [E8].End(xlDown)).Clear '營業日
  32.     End If
  33.     Exit Sub
  34. Er:  '處裡: 沒有定義名稱:"營業日"的錯誤
  35.      Me.Names.Add "營業日", Date        '定義名稱:"營業日"的值為當日
  36.      Resume Next                        '回到錯誤的下一個程式碼:繼續執行
  37. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

非常感謝強者版大們的指導 昨晚爬文爬到半夜兩點多 還是爬不出一個所以然來 我真的太愚昧了... 這兩天我會測試一下 後續再跟版大們報告狀況與請益 感謝!!!!!!

TOP

GBKEE版大您好 我剛改了一下營業的時間測試了一下現在連結的DDE報價 發現一個問題想請板大解惑 就是由於各家系統的報價時間格式不同 例如:假設現在是10:29:03   但DDE 連結到B5的內容會顯示成102903......結果測試後 只要DDE一跳動 就會在CDE欄一直往下紀錄..不是每分鐘紀錄一次最大最小值...所以想請教版大 在B5的時間顯示 該怎麼讓它透過程式顯示時間 統一用的是電腦的系統時間.... 謝謝您了 ~

TOP

還有一個小問題 不好意思 要再麻煩您一下 就是說 當下一分鐘若沒有出現大於或小於上一分鐘的最大值最小值 那麼好像就不會繼續往下跳動 舉例來說 C8儲存格10:01.. D8儲存格最大值100... E8儲純格最小值50 ... 若B6儲存格的價格沒有跳超過100以上,50以下   那麼好像就只會停留在D8 E8 之中 直到B6大於100或小於50  才會更新數據....懇請大大解惑 如何能每一分鐘由D欄及E欄依序的往下顯示取得每分鐘的最大值跟最小值...謝謝您了~~

TOP

回復 6# vzcen
這問題請附檔看看

5# 可如圖示修改格式


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

TOP

版大您好 謝謝您的回覆 我會先試著改看看 不過有個小問題想請教版大 由於程式裡面有限定"非營業日" 那現在是周六日的情況 若我要拿掉"非營業日"的程式碼 是不是只要將05行的 If Weekday(Date, vbMonday) > 5 Or Time < #9:00:00 AM# Or Time > #1:30:00 PM# Then Exit Sub  '非營業日 或 非營業時間>>>>>改成  If  Time < #9:00:00 AM# Or Time > #1:30:00 PM# Then Exit Sub  '非營業日 或 非營業時間       改完後我是不是就可以在週六日的時間 用手動的方式 輸入 DDE聯結的儲存格B5跟B6......讓程式跑跑看進行測試    .....懇請大大解惑 麻煩您了 謝謝您~

TOP

回復 8# vzcen
今天是週日,試的如何!
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

分析程式碼當中..

不過版大問的問題裡面  

有時候會包含星期六也會開盤喔...@@"  

這樣子 你那個特殊的交易日  就沒辦法記錄了

TOP

        靜思自在 : 有智慧才能分辨善惡邪正;有謙虛才能建立美滿人生。
返回列表 上一主題