分享

VBA入门56:字典的属性

 L罗乐 2017-10-13

字典是一个对象,自然就有其属性、方法。 

上一章,简单说过字典的count属性。

字典,有4个属性。

1、count属性,返回字典对象中的条目数,只读属性。

Sub 字典count()

    Dim d As Object, i&

    Set d = CreateObject('scripting.dictionary')

    For i = 2 To 7

        d(Cells(i, 1).Value) = Cells(i, 2)

    Next

    icount = d.Count

End Sub

🔼如上代码,字典的条目数icount=3,水果只有3种(不重复计数)


2、key属性,字典中的关键字。

在  d(key)=item 这个表达式中,key是必选项。

在上面的代码中,字典key有3个,“苹果”,“荔枝”,“葡萄”.


3、item属性,字典中的条目。

在  d(key)=item 这个表达式中,item也是必选项。

在上面的代码中,字典item有3个,【“苹果”的价格】 4,【“荔枝”的价格】 5,【“葡萄”的价格】 6.


在原始数据中,三种水果,各有两个价格。如将水果和价格(水果名称重复,价格多个)都装入字典,那么key对应的水果就去重复,只保留一个,而item对应的价格则保留最后一个。

将原始数据都遍历放入字典后,再查询三种水果的价格。代码如下:

又如,下面的代码。

4、CompareMode属性

简单来说,就是区分大小写。

🔼默认,字典是区分大小写的。上述代码字典的条目数是2,key-a和key-A是两个不同的key。

声明字典的CompareMode属性,为不区分大小写。

🔼此时,字典中的条目数count为1,key-a和key-A,都是同一个key,不区分大小写。所以,n=d('a')或m=d('A'),返回的都是2。

d.comparemode = vbtextcompare

可以简写为

d.comparemode = 1


所以,

d.comparemode = 0,区分大小写,默认省略区分大小写

d.comparemode = 1,不区分大小写



假如,使用字典的时候,需要不区分大小写,不用comparemode 属性,也可以使用大小写转换函数处理。

🔼通过Ucase函数将小写a变成大写A,同样,可以通过Lcase将大写A变成小写A。

🔼上述代码,要注意的地方是:


在字典里,不需要“刻意”新建一个字典key。参看代码

n = d('a'),

d(UCase('a')) = 1和d('A') = 2,两句代码,其中的key都是大写A,不是小写a。


而n = d('a')的时候,此时,字典d中,并没有key-a。

但字典是很聪明的,没有key-a,那就自动新增一个key-a吧。

所以在上面的代码中,字典的条目数为2,虽然并没有“正式”将 a 写入字典,仅仅写了n = d('a')这一句,就相当于完成了这两句代码的操作:

d('a')=''    'item没有赋值,自然是空白,所以n=空值

n = d('a')


将代码n = d('a')注释掉,如下图,只有一个key-A




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多