vba字典在金字塔中如何表示 [金字塔]
- 咨詢內容:
問題:
在鄭州期貨市場,將商品名稱左邊兩位存入數組MC(),
通過輸出,驗證MC()確實有數據希望:把數組MC()里記錄裝入字典,過濾掉重復的記錄。
但 加入數據時提示錯誤。
期望得到幫助和指導,謝謝。
,,,,
Set d=CreateObject("Scripting.Dictionary") '將數組MC()裝入字典,濾掉重復記錄
for qq=0 to ubound(mc)
d.Add mc(qq) '加入數據時出現錯誤
next
application.MsgOut d.count
End Sub下邊為測試時源代碼:
Sub t_lx() '在鄭州期貨市場,將商品名稱左邊兩位存入數組MC()
dim mc()
dim d
Count = MarketData.GetReportCount("zq")
redim mc (Count-1)
For i = 0 To Count-1
set Report3 = MarketData.GetReportDataByIndex("zq",i)
mc(i)=Left(Report3.stockname,2)
Next
for nn= 0 To i-1
application.MsgOut mc(nn) '通過輸出,驗證MC()確實有數據
NextSet d=CreateObject("Scripting.Dictionary") '將數組MC()裝入字典,濾掉重復記錄
for qq=0 to ubound(mc)
d.Add mc(qq) '加入數據時出現錯誤
next
application.MsgOut d.count
End Sub - 金字塔客服: 字典是有鍵值對的,就是說有兩列數據,你存入的時候,只有一個值,當然出錯了。
- 用戶回復: 以下是引用guotx2010在2013-2-28 16:30:05的發言:
字典是有鍵值對的,就是說有兩列數據,你存入的時候,只有一個值,當然出錯了。redim mc(Count-1) '名稱
redim dm(Count-1) ’代碼mc(i)=Left(Report3.stockname,4)
dm(i)=Right(Report3.Label,2)d.Add mc(qq),dm(qq) 還是提示錯誤:
編輯器錯誤“457”,由于控件無法看到、尚未啟用,或其他類型不接受焦點,因此無法將焦點移至該控件。
請老師再賜教。
另外,測試了論壇中“找主力合約”的例子,在本機上運行正常,里邊也應用到“字典”,因個人水平較低,看不出例子為啥就能運行。
- 網友回復: ''''''這是我用著的代碼
Set dominantContract=CreateObject("Scripting.Dictionary")
'枚舉合約,將連續合約的代碼和對應市場代碼分別作為鍵和值存入字典容器,供后續操作調用
Sub GetLxCode()
Dim marketName
dominantContract.RemoveAll
marketName=Array("SQ","DQ","ZQ","ZJ")
prefixStockNameOld=""
c"
contractVol=0
For j=0 To UBound(marketName)
n=marketData.GetReportCount(marketName(j))
For i=0 To n-1
Set reportData=marketdata.GetReportDataByIndex(marketName(j),i)
prefixStockNameCur=left(reportData.StockName,2)
suffixStockNameCur=right(reportData.StockName,2)
If suffixStockNameCur>="00" And suffixStockNameCur<"99" And reportData.Volume>0 Then
'If suffixStockNameCur="00" And reportData.Volume>0 Then
If prefixStockNameCur<>prefixStockNameOld Then
If contractLabel<>"" Then
dominantContract.Add contractLabel,contractMarket
End If
prefixStockNameOld=prefixStockNameCur
contractLabel=reportData.Label
contractMarket=marketName(j)
contractVol=reportData.Volume
ElseIf reportData.Volume>contractVol then
contractLabel=reportData.Label
contractVol=reportData.Volume
End If
End If
Next
Next
dominantContract.Add contractLabel,contractMarket
End sub - 網友回復:
prefixStockNameOld=""
c"
感覺這兩句很神秘,在程序中是啥意思?尤其是Old。希望老師能把每一條代碼給給注釋,便于學習。
另外:dominantContract.Add contractLabel,contractMarket
如果想把字典中已經裝入的記錄逐條顯示出來,應該怎么寫。
總感覺金字塔里字典的用法與VBA 不太一樣,懇請指點。
謝謝。
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 262069696 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容