我想将 Scripting.Dictionary 对象传递给 Application.OnTime。问题是我不断收到“编译错误:参数不是可选的”。
代码结构如下:
Public Sub mainSub()
Dim orderBookIndex As New Scripting.Dictionary
Dim contractIndex As New Scripting.Dictionary
Call computeStuff(0, orderBookIndex, contractIndex)
End Sub
mainSub 调用computeStuff,然后computeStuff 调用'callLive' 在增加后每秒启动它自己。
Public Sub computeStuff(index As Integer, Optional orderBookIndex As Scripting.Dictionary, Optional contractIndex As Scripting.Dictionary)
' Do stuff
If index = 0 Then
Set orderBookIndex = New Scripting.Dictionary
Set contractIndex = New Scripting.Dictionary
End If
If index = 1 Then
Set orderBookIndex = New Scripting.Dictionary
Set contractIndex = New Scripting.Dictionary
orderBookIndex.add "a", "b" ' add random stuff
contractIndex.add "c", "d" ' add random stuff
End If
Call callLive(index, orderBookIndex, contractIndex)
End Sub
然后 callLive 被调用并拒绝编译:
Public Sub callLive(index As Integer, Optional orderBookIndex As Scripting.Dictionary, Optional contractIndex As Scripting.Dictionary)
Dim SchTime As Double
SchTime = Now + TimeSerial(0, 0, 1)
index = index + 1
Application.OnTime SchTime, "'computeStuff """ & index & """ ,""" & orderBookIndex & """ ,""" & contractIndex & """'", , False
End Sub
任何帮助或指导来完成此任务(或解决此问题)都将受到高度赞赏。