vba字典

字典对象的方法有 6 个: Add方法、 Keys方法、 Items方法、Exists方法、Remove 方法、 RemoveAll 方法

Add 方法

向 Dictionary  对象中添加一个关键字项目对。

object.Add (key, item)

参数

object

必选项。总是一个 Dictionary  对象的名称。

key 必选项。与被添加的item  相关联的 key。

item 必选项。与被添加的key  相关联的 item。

说明如果 key 已经存在,那么将导致一个错误

常用语句:

Dim d

Set d =CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

 

Exists 方法

如果 Dictionary  对象中存在所指定的关键字则返回 true,否则返回 false。

object.Exists(key)

参数

object 必选项。总是一个Dictionary  对象的名称。

key 必选项。需要在Dictionary  对象中搜索的 key  值。

常用语句:

Dim d, msg$

Set d =CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

If d.Exists("c") Then

msg = " 指定的关键字已经存在。 "

Else

msg = " 指定的关键字不存在。 "

End If

 

Keys 方法

返回一个数组,其中包含了一个 Dictionary  对象中的全部现有的关键字。

object.Keys( )

其中 object 总是一个 Dictionary 对象的名称。

常用语句:

Dim d, k

Set d =CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

k=d.Keys

[B1].Resize(d.Count,1)=Application.Transpose(k)

Resize 是 Range 对象的一个属性,用于调整指定区域的大小,它有两个参数,第

一个是行数,本例是 d.Count ,指的是字典中关键字的数量,整本字典中有多少个关键

字,本例 d.Count=3 ,因为有3 个关键字。

=右边的 k 是个一维数组,是水平排列的,我们知道 Excel 工作表函数里面有个转

置函数 Transpose,用它可以把水平排列的置换成竖向排列。但是在 VBA 中不能直接使

用该工作表函数,需要通过 Application 对象的 WorksheetFunction 属性来使用它。所以

完整的写法是 Application.  WorksheetFunction.Transpose(k) ,中间的 WorksheetFunction 可

省略。现在可以解释这句代码了:把字典中所有的关键字赋给以 B1 单元格开始的单元

格区域中。

Items 方法

返回一个数组,其中包含了一个 Dictionary  对象中的所有项目。

object.Items( )

其中 object 总是一个 Dictionary 对象的名称。

常用语句:

Dim d, t

Set d =CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

t=d.Items

[C1].Resize(d.Count,1)=Application.Transpose(t)

Remove 方法

Remove 方法从一个 Dictionary 对象中清除一个关键字,项目对。

object.Remove(key )

其中 object 总是一个 Dictionary 对象的名称。

key

必选项。 key 与要从 Dictionary 对象中删除的关键字,项目对相关联。

说明

如果所指定的关键字,项目对不存在,那么将导致一个错误。

常用语句:

Dim d

Set d =CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

⋯⋯

d.Remove(“b”)

5

代码详解

1、 Dim d, t  :声明变量, d 见前例; t 默认是可变型数据类型 (Variant) 。

2、 t=d.Items  :把字典中所有的关键字对应的项赋给变量 t。得到的也是一个一维

数组,下限为 0,上限为d.Count-1 。这是数组的默认形式。

3、[C1].Resize(d.Count,1)=Application.Transpose(t) :有了上面 Keys 方法的解释这

句代码就不用多说了,就是把字典中所有的关键字对应的项赋给以 C1 单元格开始的单

元格区域中。

Remove 方法

Remove 方法从一个 Dictionary 对象中清除一个关键字,项目对。

object.Remove(key )

其中 object 总是一个 Dictionary 对象的名称。

key

必选项。 key 与要从 Dictionary 对象中删除的关键字,项目对相关联。

说明

如果所指定的关键字,项目对不存在,那么将导致一个错误。

常用语句:

Dim d

Set d =CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

⋯⋯

d.Remove(“b”)

代码详解

1、 d.Remove(“b”):清除字典中 ”b”关键字和与它对应的项。清除之后 ,现在字典里

只有 2 个关键字了。

RemoveAll 方法

RemoveAll 方法从一个 Dictionary 对象中清除所有的关键字,项目对。

object.RemoveAll( )

其中 object 总是一个 Dictionary 对象的名称。

常用语句:

Dim d

Set d =CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"

d.Add "b", "Belgrade"d.Add "c", "Cairo"

⋯⋯

d.RemoveAll

d.RemoveAll :清除字典中所有的数据。也就是清空这字典,然后可以添加新

的关键字和项,形成一本新字典。

 

 

字典对象的属性有 4 个: Count属性、 Key 属性、 Item 属性、 CompareMode 属

性。

Count 属性

返回一个 Dictionary  对象中的项目数。只读属性。

 object.Count

其中 object 一个字典对象的名称。

常用语句:

Dim d,n%

Set d =CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

n = d.Count

代码详解

1、 Dim  d, n%  :声明变量,d 见前例; n 被声明为整型数据类型 (Integer) 。一般写

法为 Dim n As Integer  。 Integer 的类型声明字符为百分比号 (% )。

2、 n = d.Count  :把字典中所有的关键字的数量赋给变量 n。本例得到的是 3。

Key 属性

在 Dictionary  对象中设置一个 key。

object.Key(key) = newkey

参数:

object

必选项。总是一个字典 (Dictionary)  对象的名称。

key

必选项。被改变的 key  值。

newkey

必选项。替换所指定的 key  的新值。

说明

如果在改变一个 key 时没有发现该 key,那么将创建一个新的key  并且其相关联7

的 item 被设置为空。

常用语句:

Dim d

Set d =CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

d.Key("c") = "d"

代码详解

1、d.Key("c")  =  "d" :用新的关键字 ”d”来替换指定的关键字 ”c”,这时,字典中就

没有关键字 c 了,只有关键字 d 了,与 d 对应的项是 ”Cairo”。

Item 属性

在一个 Dictionary  对象中设置或者返回所指定 key  的 item。对于集合则根据所

指定的 key 返回一个 item。读 /写。

object.Item(key)[ = newitem]

参数

object

必选项。总是一个 Dictionary  对象的名称。

key

必选项。与要被查找或添加的 item  相关联的 key。

newitem

可选项。仅适用于 Dictionary  对象; newitem  就是与所指定的 key  相关联的新

值。

说明

如果在改变一个 key 的时候没有找到该 item,那么将利用所指定的newitem  创

建一个新的 key。如果在试图返回一个已有项目的时候没有找到 key,那么将创建一个

新的 key 且其相关的项目被设置为空。

常用语句:

Dim d

Set d = CreateObject("Scripting.Dictionary")

d.Add "a", "Athens"

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

MsgBox d.Item("c")

代码详解

1、d.Item("c")  :获取指定的关键字 ”c”对应的项。

2、 MsgBox  :是一个 VBA 函数,用消息框显示。如果要详细了解 MsgBox 函数 的 , 可 参 见 我 的 另 一 篇 文 章 “ 常用 VBA 函 数 精 选 合 集 ”。

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

CompareMode 属性

设置或者返回在 Dictionary  对象中进行字符串关键字比较时所使用的比较模式。

object.CompareMode[ = compare]

参数

object

必选项。总是一个 Dictionary  对象的名称。

compare

可选项。如果提供了此项, compare  就是一个代表比较模式的值。可以使用的值

是 0 (二进制 )、1 (文本 ), 2 (数据库 )。

说明

如果试图改变一个已经包含有数据的 Dictionary  对象的比较模式,那么将导致一

个错误。

常用语句:

Dim d

Set d =CreateObject("Scripting.Dictionary")

d.CompareMode = vbTextCompare

d.Add "a", "Athens"

d.Add "b", "Belgrade"

d.Add "c", "Cairo"

d.Add " B ", "Baltimore"

 

 

9

表格中人员有很多是重复的,要求编写一段代码,把重复的人员姓名以及重复的次

数求出来,复制到另一个表格中。

如图实例 1-1 所示。

论坛网址:http://club.excelhome.net/thread-637004-1-1.html

图 实例 1-1

二、代码 :

Sub cfz()

Dim i&,  Myr&,  Arr

Dim d,  k,  t

Set d  = CreateObject("Scripting.Dictionary")

Myr =  Sheet1.[a65536].End(xlUp).Row

Arr = Sheet1.Range("a1:g" &  Myr)

For i  =  2 To  UBound(Arr)

d(Arr(i, 3))  =  d(Arr(i, 3))  +  1

Next k =  d.keys

t =  d.items

Sheet2.Activate

[a2].Resize(d.Count,  1) =  Application.Transpose(k)

[b2].Resize(d.Count,  1) =  Application.Transpose(t)

[a1].Resize(1,  2) =  Array(" 姓名 ",  "重复个数 ")

Set d  =  Nothing

End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值