返回列表 上一主題 發帖

DDE 擷取分鐘最高最低

本帖最後由 c_c_lai 於 2013-6-25 05:34 編輯

回復 15# vzcen
基本上,時間是會以每分鐘持續地記錄的,因為程式啟動後 Calculate 會不停地掃描。
此時,如果電腦另開啟了別的應用軟體 (耗用資源大)在運作而占據了 CPU ,那麼是會
有所影響的,或者是又同時開啟瞭一個以上的 Excel 檔等,亦會有所影響。
個人是常碰到類似相關問題 (券商DDE連線品質、電腦運作環境等)  , 純供參考。

P.S: 答覆對方時請點選 "回復" 選鈕,否則當事人會不知你有否回復,點按 "回復" 亦是一種禮貌。

TOP

各位版大們好 我下午時開著電腦讓它跑了一下....發現一個奇怪的問題.....就是報價軟體的時間與價格是有跳動的    但是DDE的時間好像有時會停住...測試結果 我附上檔案  檔案裡 時間無法連續的顯示每一分鐘....好比17:44 接下來就掉到17:46   又或者是18:14 接著跳到18:17 ......請問強者版大們這個情況是哪邊出現問題嗎??

Book1.rar (10.06 KB)

TOP

感謝C_C_lai版大的回覆 經過測試後時間可以正常的往下累積每分鐘的最大值最小值 真是太感激您了 ...但有個問題還想請教一下版大們 ...由於每家的系統報價格式不同 有的甚至沒有提供時間的DDE連結....所以我想請問有辦法做的到利用程式去跑出時間嗎??  因為若遇到沒有提供時間DDE的連結的系統那麼程式就不能順利執行了  懇請板大們幫忙解答 感謝您們了..........
另外....我知道我這樣問好像很蠢  但..我想....學習了解程式的過程中 我也該學著有關禮貌的回覆方式 因為我常看到板大們的回覆有 11# 6# 針對該文所提出的內容做回覆...所以想問問版大們 我若要回覆時 要按哪一個鈕才是針對該文的回答.....我想這樣回覆好像會更有禮貌  同時也是對辛苦版大們所做的回答內容更尊重......呵呵

TOP

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

回復 11# vzcen
B5的格式就不必修改了
B5的內容會顯示成102903, 此為6位數,請問 B5, 10點以前會顯示成95959, 此為5位數
  1. Option Explicit
  2. Private Sub Worksheet_Calculate()
  3.     Dim Rng As Range
  4.     Static Msg As Boolean    '以 Static 陳述式宣告的變數,在程式執行期間,會一直保留內容。
  5.    ' If Time < #10:28: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 <> Mid([B5].Text, 1, IIf(Len([B5]) = 6, 4, 3)) Then '如果[B5]10點以前的的數值是95959, 5位數 用此程式碼
  18.     If Rng = "" Or Rng.Text <> Mid([B5].Text, 1, 4) Then
  19.         If Rng <> "" Then Set Rng = Rng.Offset(1)
  20.         With Rng
  21.             .NumberFormatLocal = "@"
  22.              '.Cells = Mid([B5].Text, 1, IIf(Len([B5]) = 6, 4, 3))                 '如果[B5]10點以前的的數值是95959. 5位數 用此程式碼
  23.           .Cells = Mid([B5].Text, 1, 4)
  24.             .Cells(1, 2) = [B6].Text
  25.             .Cells(1, 3) = [B6].Text
  26.         End With
  27.    'ElseIf Rng.Text = Mid([B5].Text, 1, IIf(Len([B5]) = 6, 4, 3)) Then                '如果[B5]10點以前的的數值是95959. 5位數 用此程式碼
  28.     ElseIf Rng.Text = Mid([B5].Text, 1, 4) Then
  29.         If [B6] > Rng(1, 2) Then Rng(1, 2) = [B6].Text
  30.         If [B6] < Rng(1, 3) Then Rng(1, 3) = [B6].Text
  31.     End If
  32. End Sub
複製代碼
  1. Private Sub 清除舊資料()
  2.     On Error GoTo Er
  3.     If [營業日] <> Date Then            '檢查 定義名稱:"營業日"的值
  4.         Me.Names.Add "營業日", Date     '定義名稱:"營業日"的值為當日
  5.         If Weekday(Date, vbMonday) <= 5 Then Range([C8], [E8].End(xlDown)).Clear ' 修改 3#   
  6.     End If
  7.     Exit Sub
  8. Er:  '處裡: 沒有定義名稱:"營業日"的錯誤
  9.      Me.Names.Add "營業日", Date        '定義名稱:"營業日"的值為當日
  10.      Resume Next                        '回到錯誤的下一個程式碼:繼續執行
  11. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 11# vzcen
回復 9# GBKEE

TOP

版大您好 跟您報告一下 我已將程式上傳依照版大您的指導改了儲存格的時間隔式  測式的結果為時間隔式的部分皆顯示成0:00:00  只要價格跳動 CDE欄就會一直持續往下紀錄  檔案附上的內容裡 都是同一分鐘所顯示出來的   想請教版大這個部分該怎麼辦...麻煩您了~~

test1.rar (8.32 KB)

TOP

分析程式碼當中..

不過版大問的問題裡面  

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

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

TOP

回復 8# vzcen
今天是週日,試的如何!
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天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

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

5# 可如圖示修改格式


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

TOP

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