例如:
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'"
謝謝論壇,謝謝前輩耐心的等待,後學藉此帖學到很多知識,但不知道可不可行,我用兩個活頁簿之間的公式做測試每秒可以記錄300列,DDE沒用過,請前輩試試看,計算邏輯可能需要視需求調整,沒有研究這些計算的意義
使用的方法是只留[B1]裡有公式,這公式只是為了讓程式收到DDE變動值觸動 Private Sub Worksheet_Calculate() ,公式是所有DDE值相加的和而已 沒什麼意義 其他由VBA執行,字典key當變數,item當計算值
[attach]37307[/attach]
[attach]37306[/attach]
工作表模組:
Option Explicit
Private Sub Worksheet_Calculate()
Call Price
End Sub
一般模組:
Option Explicit
Public Z, BBS(1 To 5), BB(1 To 5), BA(1 To 5), BAS(1 To 5), FBS$, FAS$, E_2$, TT$, A(1 To 1, 1 To 5), j%
Sub Price()
If Not IsObject(Z) Then'一開始的[B1]公式建立
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'"
忘了一件事: If IsError([K12]) Or IsError([L12]) Then 好像DDE值會有錯誤值所以你原來才有這判斷式
所以加了 If IsError(ThisWorkbook.Sheets(1).[B1]) Then Exit Sub 請再試試看新範例檔
[attach]37314[/attach]作者: 藍天麗池 時間: 2024-1-19 15:26