【发布时间】:2017-01-02 19:04:47
【问题描述】:
每次我尝试将 UDT 传递给其他函数时,我都会收到此编译错误:“只有在公共对象模块中定义的用户定义类型才能强制转换为变体或从变体强制转换或传递给后期绑定函数。”
我测试过的唯一一个使用 UDT 作为参数的内部函数是 VarPtr。我什至不能使用 TypeName 或 VarType。
有没有办法将 UDT 作为不明确期望特定类型的参数传递?有点像 Variant,但用于 UDT。
我还想将 UDT 存储在数组/字典/集合中,但这似乎也有问题。 UDT 听起来非常适合我的需求(不必有单独的类模块),但似乎它们的类型非常严格(如果这是正确的术语的话)。
编辑:看起来 VarPtr 期望参数为“Any”类型,所以这可能是接受 Variants 和 UDT 的类型。问题是,Excel 中内置的 VBA IDE 不允许我使用该类型。
【问题讨论】:
-
不必有单独的类模块。您没有阅读错误信息吗?
-
所有这些都已经在一个模块中,而不是一个类模块中。我想在一个模块中定义所有内容,而不是多个。
-
通过对自己施加这种约束,你正在向一个受伤的世界敞开大门
-
阅读错误信息。它是特定的 “只有在公共对象模块中定义的用户定义类型才能强制转换为变体或从变体强制转换或传递给后期绑定函数。”
-
那么什么是公共对象模块?不是普通的模块吗?
标签: vba excel vbscript user-defined-types