返回列表 上一主題 發帖

[發問] 用時間控制的程式,時間要跨過隔日的 VBA要如何寫?

[發問] 用時間控制的程式,時間要跨過隔日的 VBA要如何寫?

想要寫一支VBA  紀錄 台指期"日盤"和"午後盤" 的資料
午後盤時間這一段要跨到隔天早上,寫不出來,PO上來請教高人。

Sub 共用參照()
Set MyBook = ThisWorkbook
Set Sht1 = MyBook.Sheets("台指期")

If [A1] = "日盤" And Time >= TimeValue("08:44:00") And Time <= TimeValue("13:45:00")Then '依據儲存格A1的值為"日盤"或"夜盤"--> 選擇"日盤"
     StartTime = "08:44:10"   '日盤開盤前50秒-->執行程式
     EndTime = "13:45:10"     '日盤收盤後10秒-->停止程式
End If


If [A1] = "夜盤" And Time >= TimeValue("15:00:00") And Time <= TimeValue("05:00:00") Then  '選擇夜盤(15:00:00 ~ 隔日早上 05:00:00)

     StartTime = "14:59:10"  '夜盤開盤前50秒-->執行程式
     EndTime = "05:00:10"    '夜盤收盤後10秒-->停止程式

End If

End Sub

程式時間跨隔日.jpg (55.55 KB)

程式時間跨隔日.jpg

本帖最後由 ABK 於 2018-4-26 23:09 編輯

回復 2# jackyq

我仿製了pcboy大 發問的文篇: "DDE每分鐘記錄的資料排序問題"  [ http://forum.twbts.com/thread-20603-1-1.html ] 裡面的程式碼。

將跨隔日的Code 寫入, 想做成可以跑台指"日盤"和"午後盤"每分鐘的紀錄,
停止時間那邊沒寫好, 按鈕啟動"自動記錄"後 , 沒有跑起來 !   一直卡在收盤時間。

-- A1格那邊可以選擇"日盤"或"夜盤" --

1分鐘紀錄- 測試檔-3.rar (80.11 KB)

TOP

回復 4# 准提部林


謝謝准堤大 !      只能說驚嘆,版面清爽有力,看起來很舒服!   

可否請教准堤大 資料是如何抓取的, 公式和程式裡都沒有看到任何資料源的呼叫,也不需要開卷商的軟體數值就會進來。

又這些數值看起來怪怪的,例如台指 、摩台和加權的值 , 還是說 A2:Q5那一區是假資料 用來測試紀錄的程式?

2018-04-27_准堤大.jpg (264.99 KB)

2018-04-27_准堤大.jpg

TOP

本帖最後由 ABK 於 2018-4-28 20:41 編輯

回復 6# 准提部林


  謝謝准堤大 !       了解了!
有辦法避免 在已經停止紀錄了, 又去按一次"停止鍵"時 不會跑出錯誤訊息嗎?
但是再去按"執行紀錄" 和 "清除紀錄資料"鍵 還是可以繼續正常運作 !

已經停止紀錄後 再按一次停止鍵的錯誤提示.jpg (57.36 KB)

已經停止紀錄後 再按一次停止鍵的錯誤提示.jpg

TOP

回復 8# 准提部林


    謝謝准堤大!    OK了!

TOP

回復 4# 准提部林

准堤大您好 !
再請教一個問題, 如果在程式跑了一段時間後,我要清除紀錄,但是要保留最後一筆紀錄並讓它保留在第9行,清除資料的程式要如何改寫?

保留最後一行紀錄回到第9行.png (271.21 KB)

保留最後一行紀錄回到第9行.png

TOP

回復 11# 准提部林


謝謝准堤大!     由於我預計在 N欄之後 加入一些表格,所以整列的刪除會 刪到N欄後面的資料。
我只要 A欄到N欄這一區塊的紀錄 刪除 , 保留最後一筆紀錄放到第9列 [A9:N9], 這一段要如何修正?

TOP

回復 13# 准提部林


   謝謝准提大!  
   再給我問一下!  (不好意思! 突然想到)
   如果區間是 D欄到N欄這一區塊的紀錄 要刪除 , 保留最後一筆紀錄放到第9列 [D9:N9], 又要如何寫?
   
不好意思!  想說以後寫程式會碰到不是從A欄開始的資料區, 先問起來放 !

TOP

回復 15# 准提部林

謝謝准提大!  
假設 我的即時資料是呈現在 C8: N8
我想要以後在同一張圖表上一起呈現"即時資料"與"紀錄資料",
也就是當我"清除紀錄資料"後,C9:N9的數值等於 C8:N8的數值(即時的),
在"執行紀錄"啟動後:
當第一分鐘結束時, 即時資料便記錄在C9:N9,且變成C10:N10與C8:N8 同步,
當第二分鐘結束時, 即時資料便記錄在C10:N10,且變成C11:N11與C8:N8 同步,
當第三分鐘結束時, 即時資料便記錄在C11:N11,且變成C12:N12與C8:N8 同步, ...............。
(也就是在紀錄資料區的最後一列與一直與即時數據同步)

一直到我再次"清除紀錄資料"時, 又變成C9:N9與C8:N8 同步了。
這樣的程式碼要如何寫 ?

TOP

已經解決了!

TOP

        靜思自在 : 有智慧才能分辨善惡邪正;有謙虛才能建立美滿人生。
返回列表 上一主題