返回列表 上一主題 發帖

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

本帖最後由 GBKEE 於 2011-11-12 06:44 編輯

回復 5# albertbug
[ 2011/11/12 更正 ]
試試看
  1. Private Sub Worksheet_Calculate()
  2.     Dim startTime, stopTime
  3.     Dim Tr As String, Time_Step As Date
  4.    
  5.     Time_Step = #12:05:00 AM#     '設定間隔時間: 5分鐘->300秒
  6.     'Time_Step = #12:00:01 AM#     '設定間隔時間: 1秒
  7.    
  8.     startTime = Range("A6") '開盤時間, 例如: "09:00:00 AM"
  9.     stopTime = Range("A8")  '收盤時間, 例如: "01:30:00 PM"
  10.     If startTime > Time Then  '尚未開盤
  11.         Exit Sub
  12.     ElseIf stopTime < Time Then '已經收盤
  13.         Exit Sub
  14.     Else     
  15.       If [C2] <> "-" And [C2] <> "###" Then   '清盤的狀態, 不取其資料
  16.             'Tr = Int((nowTime - startTime) * 1440) + 30  '每差 300 秒就換一列
  17.             Tr = Int((Time - startTime) / Time_Step) + 30 ' 每5分鐘一列 從第30列開始
  18.             If Range("D" & Tr) = "" Then Range("D" & Tr) = Range("C2")  '開始價
  19.             If Range("E" & Tr) = "" Or Range("C2") > Range("E" & Tr) _
  20.                 Then Range("E" & Tr) = Range("C2")                      '最高價
  21.             If Range("F" & Tr) = "" Or Range("C2") < Range("F" & Tr) _
  22.                 Then Range("F" & Tr) = Range("C2")                      '最低價
  23.             Range("G" & Tr) = Range("C2")                               '結束價
  24.         End If
  25.     End If
  26. End Sub
複製代碼

TOP

回復 7# albertbug
建議你前面加上 Range("C" & tr) = Format(Time, "HH:MM:SS") 來看看
看看你附檔上66列-786列上有不連續的資料,資料是有記錄下來的.

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

        靜思自在 : 太陽光大、父母恩大、君子量大,小人氣大。
返回列表 上一主題