ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2128|回复: 14

[求助] 网友帮忙解释下字典的属性KEY

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-1-11 15:00 | 显示全部楼层 |阅读模式
Key属性
在 Dictionary 对象中设置一个 key。
object.Key(key) = newkey
参数:
object
必选项。总是一个字典 (Dictionary)对象的名称。
key
必选项。被改变的 key 值。
newkey
必选项。替换所指定的 key的新值。
说明
如果在改变一个 key 时没有发现该 key,那么将创建一个新的 key 并且其相关联的 item 被设置为空。
Sub aa()
Dim d
   Set d = CreateObject("Scripting.Dictionary")
   d.Add "a", "Athens"
   d.Add "b", "Belgrade"
   d.Add "c", "Cairo"
d.Key("e") = "g"    我写了这句结果错的。
k = d.keys
t = d.items
[a1].Resize(UBound(k) + 1, 1) = Application.Transpose(k)
[b1].Resize(UBound(k) + 1, 1) = Application.Transpose(t)
End Sub
如果在改变一个 key 时没有发现该 key,那么将创建一个新的 key 并且其相关联的 item 被设置为空。是啥意思,谁能解释下。

TA的精华主题

TA的得分主题

发表于 2020-1-11 15:13 | 显示全部楼层
本帖最后由 wodewan 于 2020-1-11 15:33 编辑

d("e") = "g"  补充两句,供参考吧:
1. 如果字典中有某个Key,比如:key是e,其对应的值是X,{e:“X”},这时你用d("e") = "g"  ,字典的数据就变成了{e:“g”},这个相当于修改;
2. 如果字典中没有e这个关键字,你用d("e") = "g",字典就创建一个关键字“e”,并且将"g"作为它的ITEM;这个相当于新增;
3. 当你用add方法时,如果字典中已经存在了e这个关键字,就会报错,而d("e") = "g"  这种方式不会,它会执行修改的动作;
其他的,你论坛里看看一些字典的教程,里面都讲的很详细的。


TA的精华主题

TA的得分主题

发表于 2020-1-11 15:20 | 显示全部楼层
个人认为d.Key("e") = "g"改为d("e")="g"就不错,这样就是没有"e"这个key,字典就创建了这个新的key,也就是"e".而这句d.Key("e") = "g",本意是把原有的key进行改变,但你字典里没有"e"这个key,所以出错

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-11 15:24 | 显示全部楼层
excel海 发表于 2020-1-11 15:20
个人认为d.Key("e") = "g"改为d("e")="g"就不错,这样就是没有"e"这个key,字典就创建了这个新的key,也就是"e ...

d("e")="g"是d.Item("e") = "g"简写吧,我就是希望谁能解释下那句话的意思

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-11 15:25 | 显示全部楼层
本帖最后由 tospo 于 2020-1-11 15:32 编辑
wodewan 发表于 2020-1-11 15:13
d("e") = "g"  补充两句吧:
1. 如果字典中有某个Key,比如:key是e,其对应的值是X,{e:“X”},这时你用 ...
谢了
但您说的,解释不了KEY属性说明的那句话

TA的精华主题

TA的得分主题

发表于 2020-1-11 15:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 wodewan 于 2020-1-11 16:06 编辑
tospo 发表于 2020-1-11 15:25
谢了
但您说的,解释不了KEY属性说明的那句话

刚理解错你的意思了,我以为你是要添加关键字的。
注意说明里的这句话:改变一个 key 时没有发现该 key,是改变Key,不是新增加Key,
它这句话的意思是,如果字典中已经存在的某个关键字,如C,你用D.Key("C")=”G”,那么字典就会将已经存在的这个这个关键字C删除掉,用G代替(这里的G是KEY,而不是把G赋值给C)。这时C就会被就清空,其相关的ITEM也被清空(其实也就是没有C这个记录了),只是C的名称改为新的G,而新的G用的还是C的item。

TA的精华主题

TA的得分主题

发表于 2020-1-11 16:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
tospo 发表于 2020-1-11 15:25
谢了
但您说的,解释不了KEY属性说明的那句话

这个应该只是修改已有的key  ,当  newkey是 null  的情况下会创建 key是null   item清空了

TA的精华主题

TA的得分主题

发表于 2020-1-11 16:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-1-11 16:20 | 显示全部楼层
这个属性应该只能修改KEY  不能新增key ,不是赋值

TA的精华主题

TA的得分主题

发表于 2020-1-11 18:13 | 显示全部楼层
这个说明在从哪看到的,好像这个写法只能改变key,不会新增
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 21:19 , Processed in 0.048973 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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