返回列表 上一主題 發帖

關於資料比對的寫法

回復 18# 藍天麗池
目前我的電腦環境裡無安裝卷商軟體,所以無從測試。
我再整理一個適合你的程式吧!
其實你也可以向 GBKEE、准提部林 等版大,以及站上
許多前輩請益的。他們亦均是我的指導老師。

TOP

本帖最後由 c_c_lai 於 2016-7-20 11:49 編輯

回復 20# 藍天麗池
再試一次
資料暫存A.rar (70.54 KB)

TOP

本帖最後由 c_c_lai 於 2016-7-21 07:10 編輯

回復 20# 藍天麗池
  1. Private Sub Workbook_Open()
  2.     Dim rng As Variant
  3.    
  4.     With Sheets(1)
  5.         For Each rng In Range(.[D2], .[D2].End(xlDown))
  6.             rng.Offset(, 26) = IIf(IsNumeric(rng), rng, 0)
  7.             rng.Offset(, 1) = IIf(IsNumeric(rng.Offset(, -1)), rng.Offset(, -1), 0)
  8.         Next

  9.         If Time < TimeValue("08:45") Then                   '  早於開盤時間
  10.             Application.OnTime TimeValue("08:45"), "ThisWorkbook.MyWay"  '  設定於08:45 執行 MyWay 程序
  11.         ElseIf Time >= TimeValue("08:45") And Time <= TimeValue("13:30") Then '  於交易時間內
  12.             MyWay                                           '  執行 MyWay 程序
  13.         End If
  14.     End With
  15. End Sub

  16. Sub MyWay()
  17.     With Sheets(1)
  18.         For Each rng In Range(.[D2], .[D2].End(xlDown))
  19.             If IsNumeric(rng) Then
  20.                 If rng.Offset(, 26).Value <> rng.Value Then
  21.                     rng.Offset(, 26) = rng
  22.                     rng.Offset(, 2) = rng.Offset(, 1)
  23.                     rng.Offset(, 1) = IIf(IsNumeric(rng.Offset(, -1)), rng.Offset(, -1), 0)
  24.                 End If
  25.             End If
  26.         Next
  27.     End With
  28.    
  29.     Application.OnTime Now + TimeValue("00:00:10"), "ThisWorkbook.MyWay"  '  設定 10 秒後 執行 MyWay 程序
  30. End Sub

  31. Sub addN()         '  手動測試用
  32.     Dim rng As Range
  33.    
  34.     With Sheets(1)
  35.         For Each rng In Range(.[AD2], .[AD2].End(xlDown))
  36.             rng = rng + 1
  37.         Next
  38.     End With
  39. End Sub
複製代碼

TOP

回復 23# c_c_lai


    c大我出門了,可能要明天才能測試,明天再跟你說結果

TOP

本帖最後由 藍天麗池 於 2016-7-20 21:21 編輯

回復 23# c_c_lai

Application.OnTime Now + TimeValue("00:00:10"), "ThisWorkbook.MyWay"  '  設定 10 秒後 執行 MyWay 程序

C大請教一下,以上程式碼是指開盤後10秒執行(也就是8:45:10),還是指之後都是每10秒執行一次??
剛剛回到家看程式碼這個地方不太了解

TOP

本帖最後由 c_c_lai 於 2016-7-21 06:34 編輯

回復 25# 藍天麗池
第一次執行完之後,每10秒會再去執行一次。
順便將
  1. Application.OnTime TimeValue("08:45"), "MyWay"
複製代碼
改成
  1. Application.OnTime TimeValue("08:45"), "ThisWorkbook.MyWay"
複製代碼
以防尋找不著。只標明 "MyWay" ,一般系統會直接去模組裡搜尋。

TOP

回復 26# c_c_lai


    那這樣如果價格在10秒內有變動不就無法紀錄?

TOP

回復 27# 藍天麗池
"00:00:10" 那你就不會變動性的依你的需修改?
譬如:兩秒跑一次 "00:00:02"、五秒跑一次 "00:00:05"

TOP

回復 28# c_c_lai


    喔喔!c大那我了解了,目前測試ok
另外,請教一下c大,目前程式設定是單一個股的總量有變動才寫入,還是任一個股有變動就寫入呢?
因為我剛剛看了一下,感覺好像全部都一起寫入,但有時候這一秒跟前一秒價格一樣所以會有錯覺,所以再問一下c大

TOP

回復 29# 藍天麗池
全部都一起寫入,因為無法使用 Worksheet_Change()
無從判斷是由哪個欄位修正觸發的緣故。

TOP

        靜思自在 : 是非當教育,讚美作警惕。
返回列表 上一主題