一、报错问题
直接使用Dictionary对象,会报错“编译错误:用户类型未定义”,如下:
二、背景
Sub testDict()
Dim Dict As Dictionary '声明字典
Set Dict = New Dictionary '创建字典对象
'场景一:给字典赋值
Dict(0) = "姓名" '设置字典key为数字0,value为"姓名"
Dict(Dict(0)) = "张三" '设置字典key为Dict(0),value为"张三"
Debug.Print Dict(0), Dict(Dict(0)) '姓名 张三
'场景二:RemoveAll
Dict.RemoveAll '清空字典
Dict(0) = "爱好"
Dict(Dict(0)) = "跑步"
Debug.Print Dict(0), Dict(Dict(0)) '爱好 跑步
'场景三:使用Set设置变量 Dict("childDict") 为字典对象
Set Dict("childDict") = Dict '设置字典key为"childDict",value为字典的引用
Debug.Print Dict("childDict")(0), Dict(Dict("childDict")(0)) '爱好 跑步
End Sub
三、原因分析
vba 中没有添加引用动态链接库 scrrun.dll
(对应Microsoft Scripting Runtime
)。
四、解决方案
需要手动添加对应的动态链接库 scrrun.dll
(对应Microsoft Scripting Runtime
)。具体操作如下:
在菜单栏找到 “工具 > 引用”,点击进去后,找到 Microsoft Scripting Runtime
并勾选,接着点击【确定】按钮就可以正常使用。如下图所示: