返回列表 上一主題 發帖

[發問] 請教如何修改程式來提高執行效率呢?

[發問] 請教如何修改程式來提高執行效率呢?

本帖最後由 藍天麗池 於 2024-1-16 09:59 編輯

        版上前輩,附件附上一個檔案,其主要功能是用來記錄數值的變動

        其程式分兩部分 1.K12<>L12,將J5:M10的數值複製到J14:M19,I14-I18跟N14-N18是將J5-M10跟J14:M19相加減得出(主要就是讓現值跟變動前的值做相加減),然後我主要是要求I14-I18跟N14-N18的數值
                           
                          2.B2=I14-I18的值相加,C2=N14-N18的值相加,然後一直往下紀錄

        目前執行這個程式發現程式在執行上不效率不好,資料來源是券商DDE,其資料來源有時候可能內變動6-8次,但我執行程式後,所記錄下來的資料同個時間大多在大多在2-3筆居多,想請教一下版上前輩,我的程式要如何修改才能提升其效率呢?

變動記錄.rar (30.79 KB)

回復 1# 藍天麗池


如果沒有這些數值運算 前輩的EXCEL可以記錄到每秒6~8筆記錄嗎?
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 2# Andy2483


    對,就是因為這些運算才導致效率變差

TOP

本帖最後由 Andy2483 於 2024-1-18 07:30 編輯

回復 3# 藍天麗池


    請教前輩:
1.範例工作表模組裡沒有Call Price,它需要執行嗎? 原程式碼如下:
Option Explicit
Private Sub Worksheet_Calculate()
Call RecordPrice
End Sub

2.下圖黃色區域儲存格值取消,只做A到E欄的結果值記錄可以嗎? 還是黃色區域儲存格值一定要存在並隨DDE變動?
因為這些黃色區域儲存格值變化可能會影響效能,如果在VBA計算這些值後寫入A到E欄可能比較快
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 藍天麗池 於 2024-1-18 14:16 編輯

回復 4# Andy2483
1.可以刪除
2.a-e的數值就是黃色部分計算所得,如果黃色部分沒有,要如何得出a-e的值?
裡面黃色部分都可以不要,唯獨j5-m10是資料來源,我不知道是否有其他方法可以得出a-e的值

TOP

本帖最後由 Andy2483 於 2024-1-18 14:17 編輯

回復 5# 藍天麗池


範例工作表模組裡沒有Call Price,它需要執行嗎?

a-e的數值就是黃色部分計算所得,如果黃色部分沒有,要如何得出a-e的值?
在陣列/變數/字典經運算或許可以得到A~E

例如:
Option Explicit
Public Z, BBS(1 To 5), BB(1 To 5), BA(1 To 5), BAS(1 To 5), FBS, FAS
Sub 時間()
[A1] = WorksheetFunction.Text(Now(), "hh:mm:ss")
Application.OnTime Now() + TimeValue("00:00:01"), "時間"
If Not IsObject(Z) Then
   Set Z = CreateObject("Scripting.Dictionary")
   BBS(1) = "XQTISC|Quote!'FITXN*1.TF-BestBidSize1'"
   BBS(2) = "XQTISC|Quote!'FITXN*1.TF-BestBidSize2'"
   BBS(3) = "XQTISC|Quote!'FITXN*1.TF-BestBidSize3'"
   BBS(4) = "XQTISC|Quote!'FITXN*1.TF-BestBidSize4'"
   BBS(5) = "XQTISC|Quote!'FITXN*1.TF-BestBidSize5'"
   
   BB(1) = "=XQTISC|Quote!'FITXN*1.TF-BestBid1'"
   BB(2) = "=XQTISC|Quote!'FITXN*1.TF-BestBid2'"
   BB(3) = "=XQTISC|Quote!'FITXN*1.TF-BestBid3'"
   BB(4) = "=XQTISC|Quote!'FITXN*1.TF-BestBid4'"
   BB(5) = "=XQTISC|Quote!'FITXN*1.TF-BestBid5'"
   
   BA(1) = "=XQTISC|Quote!'FITXN*1.TF-BestAsk1'"
   BA(2) = "=XQTISC|Quote!'FITXN*1.TF-BestAsk2'"
   BA(3) = "=XQTISC|Quote!'FITXN*1.TF-BestAsk3'"
   BA(4) = "=XQTISC|Quote!'FITXN*1.TF-BestAsk4'"
   BA(5) = "=XQTISC|Quote!'FITXN*1.TF-BestAsk5'"
   
   BAS(1) = "=XQTISC|Quote!'FITXN*1.TF-BestAskSize1'"
   BAS(2) = "=XQTISC|Quote!'FITXN*1.TF-BestAskSize2'"
   BAS(3) = "=XQTISC|Quote!'FITXN*1.TF-BestAskSize3'"
   BAS(4) = "=XQTISC|Quote!'FITXN*1.TF-BestAskSize4'"
   BAS(5) = "=XQTISC|Quote!'FITXN*1.TF-BestAskSize5'"
   
   FBS = "=XQTISC|Quote!'FITXN*1.TF-FiveBidSize'"
   FAS = "=XQTISC|Quote!'FITXN*1.TF-FiveAskSize'"
End If
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 6# Andy2483
Andy能寫個大概我去執行看看嗎?不然你這樣說我也不太清楚,能不能還是要執行後才能確定

TOP

本帖最後由 Andy2483 於 2024-1-18 14:21 編輯

回復 7# 藍天麗池


    範例工作表模組裡沒有Call Price,它需要執行嗎?
裡面有程式 Sub Price() 但又沒被 Call Price
I14-I18跟N14-N18的數值又跟它有關
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 8# Andy2483
可以刪除

TOP

本帖最後由 藍天麗池 於 2024-1-18 14:25 編輯

回復 8# Andy2483
另外andy,請教一下,我黃色部分i14到i18是有用到if去做判別,然後才做數字運送,但你上面貼的程式碼也有做判別然後運算的功能?

TOP

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