Compile error:
Cannot define a Public user-defined type within an object module
Run Code Online (Sandbox Code Playgroud)
上述编译错误在 Visual Basic for Applications (VBA) 中意味着什么?
我想指出的是,完全相同的代码在单独的空 Powerpoint 文件中没有错误。
谢谢。
您需要了解 VBA 中不同类型的代码模块。基本上,你可以有
根据环境,您可以拥有内置模块。在 Excel 中,这些是工作簿和工作表模块,在 Word 中是文档模块(据我所知,在 Powerpoint 中,没有内置模块)。
现在,除了常规模块之外,上述所有模块都定义了类(用户表单、工作表、工作簿、文档是特殊类型的类)。并且类不能包含公共类型(它已经是公共类型),就这么简单。这类似于您不能在类型中定义类型的事实。
我假设您已在用户表单代码中定义了类型。如果您只需要该表单中的类型,请将其声明为私有。允许在类中定义类型,但它们需要是私有的,换句话说,类型在项目的其他模块中是未知的,因此,您不能拥有该类型的公共变量或公共函数返回该类型。
如果您需要在多个模块中使用该类型,则需要将类型定义移动到常规模块中(这是 GSerg 在注释中写的内容)