ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 字典嵌套数组为什么不能改变数组的值呢?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-11-25 00:18 | 显示全部楼层 |阅读模式
如下 面例子:
Sub test()
  Dim d As New Dictionary
  d(1) = Array(0, 0, 0, 0, 0)
  d(1)(1) = 10
  MsgBox d(1)(1) '显示该数组元素值仍然是0,
  
End Sub
程序执行前d(1)(1)元素的值为0,执行d(1)(1)=10语句后,d(1)(1)的值仍然为0,这是为什么呢?

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-11-25 00:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 liucqa 于 2013-11-25 08:16 编辑

Sub test()
    Set d = CreateObject("Scripting.Dictionary")
    d.RemoveAll
    ary1 = Array(0, 0, 0, 0, 0)
    d("1") = ary1
    ary2 = d("1")
    ary2(4) = 10
    MsgBox ary2(4)
    d("1") = ary2
End Sub


↓ 点评的这位对字典存储原理一无所知,就不要乱点评了,让人笑话

点评

答非所问  发表于 2013-11-25 08:03

TA的精华主题

TA的得分主题

发表于 2013-11-25 01:47 | 显示全部楼层
本帖最后由 zhaogang1960 于 2013-11-25 01:48 编辑

字典条目要整体添加,或修改:
d.Add 1, a'a可以是数组

d.Item(1)=a'.Item可以省略
可以先把字典条目读出到一个临时数组变量,修改后再一次性再添加到字典:
  1. Sub test()
  2.   Dim d As New Dictionary, t
  3.   d(1) = Array(0, 0, 0, 0, 0)
  4.   t = d(1) '读出字典条目
  5.   t(1) = 10 '修改数组的某个元素
  6.   d(1) = t '修改后的数组整体再覆盖原来的条目
  7.   MsgBox d(1)(1)
  8.   
  9. End Sub
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-11-25 08:18 | 显示全部楼层
如果你想在字典里面直接修改Item项的某数组下标值,需要使用类模块

http://club.excelhome.net/thread-1068628-1-1.html

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-12-15 23:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhaogang1960 发表于 2013-11-25 01:47
字典条目要整体添加,或修改:
d.Add 1, a'a可以是数组

d(1) 这个1是键值还是条目?

点评

键值  发表于 2014-12-16 00:11

TA的精华主题

TA的得分主题

发表于 2014-12-16 08:43 | 显示全部楼层
可以用另一种方式来处理

当前方式:数组存入字典
数组-->存入-->字典
作为字典item项的数组不能直接修改

推荐方式:数组存入数组,字典记录存入位置
数组1-->存入-->数组2-->字典记录数组1在数组2中的存储位置
作为数组2项目的数组1可以直接修改,字典只起到索引的作用

点评

这才是高手的思维。赞一个!  发表于 2014-12-16 10:16

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-11-18 19:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

感谢老师分享,谢谢。

TA的精华主题

TA的得分主题

发表于 2017-9-6 10:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
kevinchengcw 发表于 2014-12-16 08:43
可以用另一种方式来处理

当前方式:数组存入字典

受教了。。。。。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-24 12:38 , Processed in 0.048919 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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