字典作为一个对象,自然有其属性。字典有COUNT/KEY/ITEM/COMPAREMODE四个属性。
- Count属性:字典的条目数,只读属性。
- 将武器放进字典
Paste_Image.png
Sub a()
Dim arr, d As Object
Set d = CreateObject("scripting.dictionary")
arr = [a1].CurrentRegion
'----------新增字典d的条目-----------------------
For i = 2 To UBound(arr)
d(arr(i, 1)) = arr(i, 2)
Next
n = d.Count 'n=7
End Sub
- Key属性:字典的关键字,如果要改变一个Key,字典里没有的,那么就新建一个,字典里已经有的,就改变其关键字key,item不变。继续使用上面示例。
Sub a()
Dim arr, d As Object
Set d = CreateObject("scripting.dictionary")
arr = [a1].CurrentRegion
'----------新增字典d的条目-----------------------
For i = 2 To UBound(arr)
d(arr(i, 1)) = arr(i, 2)
Next
d.Key("砖头") = "金砖" '改变key关键字,砖头--->金砖,item不变。
s = d("金砖")
ss = d("砖头")
End Sub
Paste_Image.png
- 运行代码后,金砖这个关键字已经取代砖头了,但是item不变,仍是原来砖头这个key的item。
Sub a()
Dim arr, d As Object
Set d = CreateObject("scripting.dictionary")
arr = [a1].CurrentRegion
'----------新增字典d的条目-----------------------
For i = 2 To UBound(arr)
d(arr(i, 1)) = arr(i, 2)
Next
d.Item("砖头") = 110
s = d("砖头")
End Sub
Paste_Image.png
- 运行代码,砖头这个武器的价格就变成了110.实际上,d.item(key)里面的 .item 是可以省略的,我们平常一般修改的都是字典的item,很少修改其key。因此,这里都也是十分推荐使用=号的。
Sub a()
Dim arr, d As Object
Set d = CreateObject("scripting.dictionary")
arr = [a1].CurrentRegion
'----------新增字典d的条目-----------------------
For i = 2 To UBound(arr)
d(arr(i, 1)) = arr(i, 2)
Next
d("砖头") = 110 '省略了 .item
s = d("砖头")
End Sub
Paste_Image.png
- Comparemode属性:key是否区分大小写。
数据源
Sub ff()
Set d = CreateObject("scripting.dictionary")
For i = 1 To 4
d(Cells(i, 1).Value) = Cells(i, 2)
Next
s = d.keys
ss = d.items
End Sub
Paste_Image.png
- 显然默认区分大小写
- 如何使其不区分大小写?A和a是同一个key。
Sub ff()
Set d = CreateObject("scripting.dictionary")
d.comparemode = 1 '增加此句
For i = 1 To 4
d(Cells(i, 1).Value) = Cells(i, 2)
Next
s = d.keys
ss = d.items
End Sub
Paste_Image.png
- d.comparemode = 1是不区分大小写,那么区分大小写,自然可以写d.comparemode = 0
- 另外,要处理大小写的问题,还可以利用 Lcase和Ucase函数来转换key的大小写。
网友评论