合理使用Dictionary(数据字典)对象,可以提高代码运行速率。通过创建并初始化Dictionary对象,建立“键-值”对,通过Dictionary的exists(key1)方法和Item(key1)属性可以快速的查找出键的值,而不需要每次遍历整个表。
Dictionary相关属性和方法:
1.创建Dictionary
2.属性
CompareMode 设定或返回键的字符串比较模式
Count 返回Dictionary里的键/条目对的数量
Item(key) 设定或返回指定的键的条目值
Key(key) 设定键值
3.方法
Add(key,item) 增加键/条目对到Dictionary
Exists(key) 如果指定的键存在,返回True,否则返回False
Items() 返回一个包含Dictionary对象中所有条目的数组
Keys() 返回一个包含Dictionary对象中所有键的数组
Remove(key) 删除一个指定的键/条目对
RemoveAll() 删除全部键/条目对
3.应用实例:
当前工作簿中有三张工作表——问题跟踪、映射目录和SDM_ALL,结构为:
问题跟踪(……,数据表,字段,问题类型,……);(已排序)
映射目录(……,表名,……,问题跟踪);
SDM_ALL(……,表名,字段名,……,问题跟踪);
要求根据“问题跟踪.数据表=映射目录.表名”连接,在映射目录的问题跟踪列创建连接,显示内容为“>>”,连接到问题跟踪表相应的第一条记录。类似的,根据表名和字段名做连接,在SDM_ALL的问题跟踪列创建连接,显示内容为“>>”,连接到问题跟踪表相应的记录。
4.相关代码
5.几点说明
(1)为列或行定义变量,这样在表结构变化时,如在插入了一个列,只需要对列变量重新复制即可,增强程序的灵活性。
(2)使用UCase()函数将小写转换大写字母。
(3)当主键为多列时,如表名+字段名唯一识别一条记录,可使用一个不常用的字符如“#”将表名和字段名拼接起来,作为Dictionary的键值key。
ColDict.Add UCase(Trim(QSheet.Cells(j, ENTABLE)) & "#" & Trim(QSheet.Cells(j, ENCOL))), j
(4)字符串连接符号——“&”。
k = TbDict.Item(UCase(Trim(CSheet.Cells(i, CENTABLE))))
SubAddr = QSheet.Name & "!" & k & ":" & k
一定要用QSheet.Name,这样才能获得sheet名,如果写成QSheet报错。
(5)使用Hyperlinks对象的Add方法创建超链接:
Sheets("映射目录").Hyperlinks.Add Anchor:=CSheet.Cells(i, CTRACK), Address:="", SubAddress:=SubAddr, TextToDisplay:=">>"
Anchor为创建链接的对象,SubAddress为链接到的地址。