Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: 开辆小富康

[已解决]有关字典和数组结合后修改数组的疑问

[复制链接]
发表于 2010-2-25 20:33 | 显示全部楼层


Sub test()
    Dim Dic As Object
    Set Dic = CreateObject("scripting.dictionary")
    Dic.Add "Key1", Array(1, False)   '将数组作为item加入字典
    MsgBox Dic("Key1")(1)    '显示该key下的item,即数组的第二项的值false
    
    
    Dic.Add Dic("Key1")(1), True    '如果该关键字已经存在,则产生一个错误。
    Dic("Key1")(2) = True           '因为超过数组上界,而返回下标越界。
        
    
    Dic("Key1")(1) = True    '妄图改变该数组的第二项值为true,程序不报错,但是不成功
    MsgBox Dic("Key1")(1)    '仍旧显示false值
    Dic("Key1") = Array(1, True)    '一定要这样改变才正确,不知为什么
    MsgBox Dic("Key1")(1)    '这回显示修改值成功了。
End Sub

中间两句是我加的,我这么认为的:

  1. 黄色的,执行后没报错。根据帮助的说明,证明字典中不存在这样一个Dic.Add Dic("Key1")(1)KEY。不存在的KEY,怎么修改?
  2. 棕色的,执行后报错。原因如注释,证明字典将识别出该数组元素("Key1")(2),而不是不可识别,并判断出该数组元素越界了。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2010-2-25 20:40 | 显示全部楼层

下午刚讲了let,get,还没消化,再看这附件,又晕了,虽然不明白,但我相信阿木的应该更对[em11]

回复

使用道具 举报

 楼主| 发表于 2010-2-25 22:29 | 显示全部楼层
回复

使用道具 举报

发表于 2010-2-26 08:54 | 显示全部楼层

搞错了一件事。

clsB.A(0) = 0

这个总是执行Get过程,所以没法赋值。

回复

使用道具 举报

发表于 2010-2-27 11:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2010-8-17 12:08 | 显示全部楼层

[em17][em17][em17]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 20:16 , Processed in 0.289028 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表