字典是一个对象,自然就有其属性、方法。 上一章,简单说过字典的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 |
|