欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → vba字典在金字塔中如何表示

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3947人关注过本帖树形打印复制链接

主题:vba字典在金字塔中如何表示

帅哥哟,离线,有人找我吗?
duolaijin668
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:28 积分:200 威望:0 精华:0 注册:2013/2/5 22:55:28
vba字典在金字塔中如何表示  发帖心情 Post By:2013/2/28 16:09:29 [只看该作者]

问题:

     在郑州期货市场,将商品名称左边两位存入数组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()确实有数据 
Next

Set d=CreateObject("Scripting.Dictionary") '将数组MC()装入字典,滤掉重复记录
for qq=0 to ubound(mc)
d.Add mc(qq)                       '加入数据时出现错误
next
application.MsgOut d.count                   
End Sub


 回到顶部
帅哥哟,离线,有人找我吗?
guotx2010
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2013/2/28 16:30:05 [只看该作者]

字典是有键值对的,就是说有两列数据,你存入的时候,只有一个值,当然出错了。

 回到顶部
帅哥哟,离线,有人找我吗?
duolaijin668
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:28 积分:200 威望:0 精华:0 注册:2013/2/5 22:55:28
  发帖心情 Post By:2013/3/1 10:29:11 [只看该作者]

以下是引用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”,由于控件无法看到、尚未启用,或其他类型不接受焦点,因此无法将焦点移至该控件。

 

请老师再赐教。

 

   另外,测试了论坛中“找主力合约”的例子,在本机上运行正常,里边也应用到“字典”,因个人水平较低,看不出例子为啥就能运行。

 

 

 

 

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
guotx2010
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2013/3/1 11:58:36 [只看该作者]

''''''这是我用着的代码
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

 回到顶部
帅哥哟,离线,有人找我吗?
duolaijin668
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:28 积分:200 威望:0 精华:0 注册:2013/2/5 22:55:28
请教两句代码意思  发帖心情 Post By:2013/3/2 14:12:38 [只看该作者]

 prefixStockNameOld=""
 c"
感觉这两句很神秘,在程序中是啥意思?尤其是Old。

希望老师能把每一条代码给给注释,便于学习。

另外:dominantContract.Add contractLabel,contractMarket

如果想把字典中已经装入的记录逐条显示出来,应该怎么写。

总感觉金字塔里字典的用法与VBA 不太一样,恳请指点。

谢谢。


 回到顶部
帅哥哟,离线,有人找我吗?
admin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2013/3/3 0:43:40 [只看该作者]

论坛的问题,部分VBS代码无法正常显示,请参考这里

http://www.weistock.com/bbs/dispbbs.asp?BoardID=5&ID=4977&skin=0


 回到顶部
帅哥哟,离线,有人找我吗?
duolaijin668
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:28 积分:200 威望:0 精华:0 注册:2013/2/5 22:55:28
谢谢  发帖心情 Post By:2013/3/3 15:16:14 [只看该作者]

经认真研究列子,基本得到领悟。谢谢。

 回到顶部