標題:
[發問]
詢問一個紀錄開高低收價的VBA問題
[打印本頁]
作者:
laieven
時間:
2015-7-6 01:38
標題:
詢問一個紀錄開高低收價的VBA問題
將程式寫在工作表事件程序Calculate中
a2資料來源會用dde連結看盤軟體的成交價
測試的時候我暫時把資歷來源設定為另一個excel檔案的a1儲存格
只要我改變資料~~~開高低收的紀錄算正常
但就是無法做到每一段固定時間(例如每1分鐘或每5分鐘甚至是每5秒)就換一列的這個動作
還請高手幫忙看一下∼~我錯在哪!!感謝!!
[attach]21325[/attach]
作者:
GBKEE
時間:
2015-7-6 09:58
回復
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
複製代碼
作者:
laieven
時間:
2015-7-6 11:57
版主熱情的協助,讓我大吃一驚阿!
再此先萬分感謝了!!!
我得花點時間消化一下版主的協助!!
感恩感恩!!!!!
學習去!!!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)