注:本文为“Visual Basic for Applications 编译错误”相关文章合辑。
图片清晰度受引文原图所限。
略作重排,未整理去重。
如有内容异常,请看原文。
用户定义的类型未定义
2023/04/07
您可在 Visual Basic 中创建自己的 数据类型.,但它们必须先在 Type…End Type 语句或之前注册的 对象库.或 类型库.中定义。 此错误的原因及解决方案如下:
-
您已尝试声明未定义数据类型的 变量.或 参数.或您指定了未知 类.或对象。
在 模块.中使用 Type 语句定义新的数据类型。 如果您尝试创建对类的引用,则类必须对 项目.可见。 如果您要在程序中引用类,则项目中必须具有指定名称的 类模块.。 检查类型名称或对象名称的拼写。
-
您要声明的类型位于其他模块中,但已声明为 Private 。 将此类型的定义移到 标准模块.,此类型在其中可声明为 Public。
-
The type is a valid type, but the object library or type library in which it is defined isn’t registered in Visual Basic. Display the References dialog box, and then select the appropriate object library or type library. For example, if you don’t check the Data Access Object in the References dialog box, types like Database, Recordset, and TableDef aren’t recognized and references to them in code cause this error.
该类型是一个有效的类型,但是定义该类型的对象库或类型库未在 Visual Basic 中注册。请显示 “引用” 对话框,然后选择适当的对象库或类型库。例如,如果您在 “引用” 对话框中未选中 “数据访问对象”,则像 Database、Recordset 和 TableDef 这样的类型将不被识别,代码中对它们的引用将导致此错误。
有关其他信息,选择有问题的项并按 F1(在 Windows 中)或 HELP(在 Macintosh 上)。
【VBA报错】编译错误:用户类型未定义
Shipley Leo于 2024-05-18 23:06:15 发布
一、报错问题
直接使用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
并勾选,接着点击【确定】按钮就可以正常使用。如下图所示:
via:
-
用户定义的类型未定义 (VBA) | Microsoft Learn
https://learn.microsoft.com/zh-cn/office/vba/language/how-to/user-defined-type-not-defined -
2024【VBA报错】编译错误:用户类型未定义_用户定义类型未定义 vba-CSDN博客
https://blog.csdn.net/Shipley_Leo/article/details/139032645 -
2012-关于Excel vba 提示用户定义类型未定义_excel用户定义类型未定义-CSDN博客
https://blog.csdn.net/nanchangniat/article/details/7850058 -
2010-已解决【不知出现 “用户定义类型未定义” 如何解决?】-Excel VBA 程序开发 - ExcelHome 技术论坛 -
https://club.excelhome.net/thread-548731-1-1.html -
Comctl32公共控件 | ashe’s blog
https://ashe27.github.io/2022/05/10/16251848/ -
常见控制版本 - Win32 apps | Microsoft Learn
https://learn.microsoft.com/zh-cn/windows/win32/controls/common-control-versions