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 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容