Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 12384|回复: 11

[已解决]怎样直接修改字典中第n个key值

[复制链接]
发表于 2009-11-4 22:06 | 显示全部楼层 |阅读模式

Sub Dict()

    Dim d As Object    '创建一个变量
    Set d = CreateObject("Scripting.Dictionary")

    d.Add "a", "Athens"             '添加一些关键字和条目
    d.Add "b", "Belgrade"
    d.Add "c", "Cairo"


    '修改第2个key值
    d("a") = "aa"       '正确
    'd.Key(1) = "aa"    '错误
    'd.Key1 = "aa"      '错误

End Sub

我是联想工作表对象,才举出的错误写法。请问,是不是仅次1种直接修改第2个key值的方法?

谢谢!

最佳答案
2009-11-4 22:23

MS楼主改的不是KEY,而是ITEM

改KEY:

d.Add "a", "Athens"             '添加一些关键字和条目
    d.Add "b", "Belgrade"
    d.Add "c", "Cairo"

d.Remove ("a")
d.Add "aa", "Athens"

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2009-11-4 22:22 | 显示全部楼层
回复

使用道具 举报

发表于 2009-11-4 22:23 | 显示全部楼层    本楼为最佳答案   

MS楼主改的不是KEY,而是ITEM

改KEY:

d.Add "a", "Athens"             '添加一些关键字和条目
    d.Add "b", "Belgrade"
    d.Add "c", "Cairo"

d.Remove ("a")
d.Add "aa", "Athens"

回复

使用道具 举报

 楼主| 发表于 2009-11-4 23:07 | 显示全部楼层

[em06][em06]越怕错越错

谢谢阿木,雨狐!

就这样一种表示方法呀,我是较工作表的表示方法(3种)而言。

key所对应的item,只能是形如:d("a")

真不甘心呀[em03]

回复

使用道具 举报

发表于 2009-11-4 23:42 | 显示全部楼层

看了这个贴了后,重新学习了一下字典:做了一个批量(选择)修改主键的例子,供大家看看是否有问题

PS:字典要前期绑定,这个也是困绕我的一个问题

Sub a()
Dim i%, k%
Dim d As New Dictionary
For i = 1 To 10
    d(Cells(i, 1) & "") = ""
Next
'主健分别为一、二........
Stop
For k = 1 To d.Count
     d.Key(d.Keys(k - 1)) = Cells(k, 2) & ""
Next
'主健改为为1、2........
Stop
Set d = Nothing
End Sub

附件:

pCGTmvIp.rar (6.99 KB, 下载次数: 25)

0EtxD8L9.rar

7.11 KB, 下载次数: 25

[已解决]怎样直接修改字典中第n个key值

回复

使用道具 举报

发表于 2009-11-5 00:43 | 显示全部楼层

Cells(i, 1) & ""

改成:Cells(i, 1).value 更好一点吧

回复

使用道具 举报

发表于 2009-11-5 06:26 | 显示全部楼层

学习[em02][em02]
回复

使用道具 举报

发表于 2009-11-5 08:05 | 显示全部楼层

QUOTE:
以下是引用lpsh1985在2009-11-5 0:43:00的发言:

Cells(i, 1) & ""

改成:Cells(i, 1).value 更好一点吧

是的,以前我也一直是这样写的,不过我很马虎,习惯性经常把.value省略,造成错误(PS:这才发现字典的KEY竟然可以是对象),后来看贴时一个高手经常写成&"",直接转成单元格内容,觉得省事,就照搬了,也不知道两者的差别,是否能说具体一些,学习一下[em04]
回复

使用道具 举报

 楼主| 发表于 2009-11-5 09:30 | 显示全部楼层

[已解决]怎样直接修改字典中第n个key值

[已解决]怎样直接修改字典中第n个key值

我又仔细看了看,3楼的回复也不对,见上图。
d.Key("a") = "aa"               '修改key值("a")为新key值("aa")

[此贴子已经被作者于2009-11-5 9:32:46编辑过]
回复

使用道具 举报

发表于 2009-11-5 17:30 | 显示全部楼层

Dictionary对象的Key和数据库的记录是一样的,位置上没有顺序之分,这点不象工作表.你可以说"我删除工作表的第3行",但你不能说"我删除数据库的第3条记录",也不能说"我删除Dictionary对象的第3个Key".
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 02:59 , Processed in 0.324340 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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