【VBA报错】编译错误:用户类型未定义

一、报错问题

直接使用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 并勾选,接着点击【确定】按钮就可以正常使用。如下图所示:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值