- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
27#
發表於 2015-9-19 06:08
| 只看該作者
本帖最後由 GBKEE 於 2015-9-21 05:43 編輯
回復 26# laieven
你附檔00000002.xlsm 的程式碼- Option Explicit
- Dim 總成交量 As Single
- Private Sub Worksheet_Calculate()
- Dim startTime, stopTime
- Dim Rng As Range, 成交單 As Range
- startTime = Range("A1") '開盤時間, 例如: "09:00:00 AM"
- stopTime = Range("B1") '收盤時間, 例如: "01:30:00 PM"
- If Time <= startTime Then
- '清理昨日紀錄
- Application.EnableEvents = False
- Range(Range("A5:E5"), Range("A5:E5").End(xlDown)) = ""
- Application.EnableEvents = True
- Exit Sub '尚未開盤
- End If
- If Time > stopTime Then Exit Sub '已經收盤
- If IsError([b2]) Then Exit Sub 'dee 軟體在開盤前重整時會傳回錯誤值
- Set 成交單 = [G2]
- Application.EnableEvents = False
- With [A65536].End(xlUp)
- If Format(.Cells, "HH:MM") <> Format(Time, "HH:MM") Then
- 'dde紀錄工作表上,要有一個DEE的時間公式,引發這 Calculate 重算事件
- Set Rng = .Offset(1)
- Else
- Set Rng = .Cells
- End If
- End With
- With Rng
- .Cells = Format(Time, "HH:MM") '在A欄中記下每一分鐘 , 不管有無成交
- If 總成交量 <> [H2].Value Then
- If 成交單 >= 10 Then
- .Range("B1") = .Range("B1") + 成交單
- Else
- .Range("D1") = .Range("D1") + 成交單
- End If
- 總成交量 = [H2]
- End If
- '這分鐘 -上一分鐘
- If .Cells.Row > 5 Then
- .Range("C1") = .Range("B1") - .Range("B1").Offset(-1)
- .Range("E1") = .Range("D1") - .Range("D1").Offset(-1)
- Else
- .Range("C1") = .Range("B1")
- .Range("E1") = .Range("D1")
- End If
- End With
- Application.EnableEvents = True
- End Sub
複製代碼 |
|