- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
回復 1# laieven
試試看- Option Explicit
- Private Sub Worksheet_Calculate()
- Dim StartTime As Date, StopTime As Date
- Dim T(1 To 3) As Double, xMax As Double, xMin As Double
- Dim 成交價 As Range
- Static Rng As Range, S As Integer
-
- StartTime = Range("A6") '開盤時間, 例如: "09:00:00 AM"
- StopTime = Range("A7") '收盤時間, 例如: "01:30:00 PM"
- If Time <= StartTime Or Time > StopTime Then '尚未開盤 或 已經收盤
- Set Rng = Nothing
- Exit Sub
- End If
- Set 成交價 = Range("A2")
- '****分鐘設定******
- 'T(1) = Application.Text(StartTime, "[M]") '開盤時的分鐘數
- 'T(2) = Application.Text(Time, "[M]") 'Now的分鐘數
- 'T(3) = Round(((T(2) - T(1)) / 5)) '開盤後每時5分鐘的間隔次數
-
- '*** 秒數設定
- T(1) = Application.Text(StartTime, "[S]") '開盤時的秒數
- T(2) = Application.Text(Time, "[S]") 'Now的秒數
- T(3) = Round(((T(2) - T(1)) / 10)) '開盤後每10秒的間隔次數
-
- If Rng Is Nothing Then Set Rng = Range("D1").Resize(, 4)
- xMax = Application.Max(Rng) '歷史最高價
- xMin = Application.Min(Rng) '歷史最低價
-
- If S = T(3) Then '設定的時間間隔內
- If 成交價 > xMax Then Rng.Cells(1, 2) = 成交價 '最高價
- If 成交價 < xMin Then Rng.Cells(1, 3) = 成交價 '最高價
- Rng.Cells(1, 4) = 成交價 '收盤價
- ElseIf S <> T(3) Then
- Set Rng = Rng.Offset(1) '下一列
- Rng.Resize(, 4) = 成交價
- Cells(Rng.Row, "c") = Time '查看時間的間隔,如不需要可刪除掉
- End If
- S = T(3)
- End Sub
複製代碼 |
|