VBA的字典对象小结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VBA的字典对象小结
VBA的字典对象效率高,还好用。不过,虽然字典对象本身不复杂,但依旧会有忘记了的地方,今天就抽一点点时间,自己整理个小节,方便以后查用。2019-05-19
字典(Dictionary)对象:
相当于一种联合数组,由具有唯一性的关键字(Key)和它的项(Item)联合组成。就好像一本字典,由字条和对应的注解组成。
名词对照:
下面分三个方面讲解。
首先是方法:
方法有6个:Add、Exists、Keys、Items、Remove、RemoveAll。
Add方法
object.Add (key, item)
向Dictionary 对象中添加一个关键字项目对。
如果key 已经存在,将导致一个错误。
Exists方法
object.Exists(key)
如果Dictionary 对象中存在所指定的关键字则返回true,否则返回false。Keys方法
object.Keys( )
返回一个数组,其中包含了一个Dictionary 对象中的全部现有的关键字。Items方法
object.Items( )
返回一个数组,其中包含了一个Dictionary 对象中的所有项。
Remove方法
object.Remove(key)
Remove 方法从一个Dictionary 对象中清除一个关键字,项目对。
如果所指定的关键字,项目对不存在,那么将导致一个错误。
RemoveAll方法
object.RemoveAll( )
RemoveAll 方法从一个Dictionary 对象中清除所有的关键字,项目对。
其次是属性:
属性有4个:Count、Key、Item、CompareMode。
Count属性
object.Count
返回一个Dictionary 对象中的项目数。只读属性。
Key属性
object.Key(key) = newkey
在Dictionary 对象中设置一个key。
如果没有发现该key,那么将创建一个新的key 并且其item 被设置为空。
Item属性
object.Item(key)[ = newitem]
在一个Dictionary 对象中设置或者返回所指定key 的item。对于集合则根据所指定的key 返回一个item。读/写。
newitem 是可选项。仅适用于Dictionary 对象;是与所指定的key 相关联的新值。
如果没有找到该item,那么将利用所指定的newitem 创建一个新的key。
如果在试图返回一个已有项目的时候没有找到key,那么将创建一个新的key 且其相关的项目被设置为空。
CompareMode属性
pareMode[ = compare]
设置或者返回在Dictionary 对象中进行字符串关键字比较时所使用的比较模式。
compare 是可选项,代表比较模式的值。可以是0 (二进制)、1 (文本), 2 (数据库)。
如果试图改变一个已经包含有数据的Dictionary 对象的比较模式,那么将导致一个错误。
最后是经典代码举例:
这两个例子很有Excel特色。
例一:把字典中所有的关键字赋给以B1单元格开始的单元格区域中。
Dim dic, karr
Set dic = CreateObject("Scripting.Dictionary")
dic.Add "a", "数据A"
dic.Add "b", "数据B"
dic.Add "c", "数据C"
karr=dic.Keys '数组,下限0
[B1].Resize(dic.Count,1)=Application.Transpose(karr)
'Resize第一个参数是行数,第二个参数是列数。
'Transpose,把水平排列的置换成竖向排列。
例二:把字典中所有的关键字对应的项赋给以C1单元格开始的单元格区域中。
Dim dic, tarr
Set dic = CreateObject("Scripting.Dictionary")
dic.Add "a", "数据A"
dic.Add "b", "数据B"
dic.Add "c", "数据C"
tarr=dic.Items
[C1].Resize(dic.Count,1)=Application.Transpose(tarr)
正文完