- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
本帖最後由 GBKEE 於 2018-10-13 09:01 編輯
回復 1# dreamsway
參考看看- Option Explicit
- Public uMode&, StartTime, EndTime
- Public MyBook As Workbook, Sht1 As Worksheet, Sht2 As Worksheet, Sht3 As Worksheet, xRow&
- Sub 共用參照()
- Set MyBook = ThisWorkbook
- Set Sht1 = MyBook.Sheets("多空藍圖")
- Set Sht2 = MyBook.Sheets("報價數據")
- Set Sht3 = MyBook.Sheets("多空數據")
- StartTime = "08:44:50" '開盤時間(提早十秒開始,才可記錄開盤量價)
- End Sub
- Sub 報價運算()
- Dim xTime As Date
- Call 共用參照 '測試用
- If Sht2.Range("H2") <> 1 Then '開盤條件
- Sht2.Range("J2,J4,J5").ClearContents '清除紀錄資料
- Sht2.Range("K2") = Sht2.Range("I2") '判斷價改為開盤價
- End If
- i = 1
- xTime = Time
- Do
- If Time > xTime Then 'Time 以秒計算的 ** Time > xTime = >下一秒 **
- i = i + 1: xTime = Time
- If Sht2.Cells(2, "J") = "↑" And Sht2.Cells(i, "H") <> 1 Then '多方加總
- Sht2.Range("J4") = Sht2.Range("J4") + Sht2.Range("D" & i)
- End If
- If Sht2.Cells(2, "J") = "↓" And Sht2.Cells(i, "H") <> 1 Then '空方加總
- Sht2.Range("J5") = Sht2.Range("J5") + Sht2.Range("D" & i)
- End If
- If Sht2.Cells(i, "H") <> 1 Then '報價時間傳送到多空藍圖
- Sht1.Cells(1, "C") = Sht2.Range("B" & i)
- End If
- Call 多空紀錄
- Sht2.Cells(i, "H") = 1 '運算過的進行標記避免重複運算
- End If
- Loop Until Sht2.Range("C" & i + 1) = 0 '迴圈停止條件
- End Sub
- Sub 多空紀錄()
- Dim xMinute As Integer
- Call 共用參照 '測試用
- xMinute = Int(Application.Text(Time - #8:45:00 AM#, "[M]") / 5)
- '*** xMinute 以 Time 距 8:45 的分鐘數 / 5 傳回的整數
- '*** Time 小於 8:45 得到負數
- If xMinute > -1 And Time <= #1:45:00 PM# Then
- xMinute = xMinute + 2 '*** 從第2列開始
- Sht3.Cells(xMinute, "B") = Sht2.Cells(4, "J")
- Sht3.Cells(xMinute, "C") = Sht2.Cells(5, "J")
- End If
- End Sub
- Sub 清除標記()
- Call 共用參照 '測試用
- Sht2.Columns("H").Clear
- Sht2.Cells(1, "H").Value = "標記"
- End Sub
- Sub 清除報價()
- Dim qyt As QueryTable '刪除外部連線
- Call 共用參照 '測試用
- With Sht2
- .Columns("A:G").Clear '刪除後將標題名稱填入
- .Columns("A:G").Rows(1) = Array("代號", "時間", "成交價", "單量", "總量", "最高價", "最高價", "最低價")
- For Each qyt In .QueryTables
- qyt.Delete
- Next
- End With
- End Sub
複製代碼 |
|