在标准模块中用Public语句声明的类型在类模块里无法使用(加急)解决思路

在标准模块中用Public语句声明的类型在类模块里无法使用(加急~)我在标准模块里用Public语句声明了一个名为

在标准模块中用Public语句声明的类型在类模块里无法使用(加急~)
我在标准模块里用Public语句声明了一个名为MemTab的类型(Type语句),在类模块的一个过程里,有一个参数是这个类型的,但是已运行VB就显示:

“只有在公共对象模块中定义的公共用户定义类型可以作为参数,类模块的公共过程返回类型,公共用户定义类型的字段使用。”

为什么会这样,我的程序有哪点不满足了???(加急啊)

[解决办法]
无法解决, 因为这个编译错误信息提示VB的模块(Module)是私有性的(Private), 而且无法设置! 所以在这种情况下应使用类(Class)代替Type
[解决办法]
只有在公共对象模块中定义的公共用户定义类型可以....

而问题在于模块不是对象.

所以如果你非要想在你的类过程中这么引用参数的话, 你必须把这个"自定义类型"写成单独一个类的形式.

比如原来的定义:
'Module1
PUBLIC TYPE AAA
 AA AS LONG
 BB AS INTEGER
END TYPE

得写成:
'Class1
public AA AS LONG
PUBLIC BB AS INTEGER
'没有END CLASS

引用这个东西的时候也得老老实实按照类来new一个实例:
DIM AAAA AS NEW AA
就这样

不过作为参数的话, 应该是BYREF引用, 而不能BYVAL了

[解决办法]
http://topic.csdn.net/u/20080413/16/afcd5e50-5109-4113-bb46-827f80f0e070.html

探讨
原因:可以看看《高级 Visual Basic 编程》,CSDN 的资源区有下载。

解决方法1:将 TFalseOrTrue 声明在 tlb 中,然后工程引用该 tlb。

解决方法2:如果你不会写 tlb,那么添加一个 ActiveX DLL 类型的工程,将 TFalseOrTrue 声明在新工程默认的 Class1 中,旧工程引用新工程。