Public Type A S As Long L() As B End Type Public Function CC(K As A) As Boolean K As A 报错:“只有在公共对象模块中定义的公共用户定义类型可以作为参数、类模块的公共过程返回类型、公共用户定义类型的字段使用。”
Public Type A S As Long L() As B End Type 在bas模块中
Public Type A S As Long L() As B End Type 就是在模块里Public Function CC(K As A) As Boolean 在类里如果将Public Function CC(K As A) As Boolean 也放在模块里,很不方便,函数体内用到类中的变量时传递很困难。我的意思是,如何在类中定义CC函数,而不要放在模块里。
必须创建类。方法是: 1、新建一个ActiveX DLL工程,并设置工程名称,如myTypes 2、设置类名。如Pointxy。在属性窗口中将类的Instancing设置为6-GloblMultiUse。表示全局对象。标准工程中引用该类后,即可直接调用其方法,不必创建实例。 3、在类的代码窗口定义你需要的类型。可以定义多个类型,但需Public声明。如: Public Type POINT x As Single y As Single End Type 4、定义类的其他方法、事件、属性。(必要时) 5、保存工程。并生成DLL。 生成类的DLL后,其他工程中引用该类,即可在函数中以该类定义的类型作为参数。
Type A S As Long L() As B End Type 就可以了。
注意你的引用方式,要使用Byref Option ExplicitPublic Type A S As Long ' L() As B End Type'就是在模块里Public Function CC(ByRef K As A) As BooleanEnd Function
添加ByRef问题依旧,不行
在类模块中将函数(方法)的public修饰改为Friend Option ExplicitPublic Type A S As Long ' L() As B End Type'就是在模块里Friend Function CC(ByRef K As A) As BooleanEnd Function
Public Type A
S As Long
L() As B
End Type
Public Function CC(K As A) As Boolean K As A 报错:“只有在公共对象模块中定义的公共用户定义类型可以作为参数、类模块的公共过程返回类型、公共用户定义类型的字段使用。”
S As Long
L() As B
End Type 在bas模块中
Public Type A
S As Long
L() As B
End Type 就是在模块里Public Function CC(K As A) As Boolean
在类里如果将Public Function CC(K As A) As Boolean
也放在模块里,很不方便,函数体内用到类中的变量时传递很困难。我的意思是,如何在类中定义CC函数,而不要放在模块里。
1、新建一个ActiveX DLL工程,并设置工程名称,如myTypes
2、设置类名。如Pointxy。在属性窗口中将类的Instancing设置为6-GloblMultiUse。表示全局对象。标准工程中引用该类后,即可直接调用其方法,不必创建实例。
3、在类的代码窗口定义你需要的类型。可以定义多个类型,但需Public声明。如:
Public Type POINT
x As Single
y As Single
End Type
4、定义类的其他方法、事件、属性。(必要时)
5、保存工程。并生成DLL。
生成类的DLL后,其他工程中引用该类,即可在函数中以该类定义的类型作为参数。
S As Long
L() As B
End Type 就可以了。
Option ExplicitPublic Type A
S As Long
' L() As B
End Type'就是在模块里Public Function CC(ByRef K As A) As BooleanEnd Function
添加ByRef问题依旧,不行
Option ExplicitPublic Type A
S As Long
' L() As B
End Type'就是在模块里Friend Function CC(ByRef K As A) As BooleanEnd Function
1.传递指针,在函数内用Copy内存的方式重组,这样要在结构中注明结构的长度。
2.后期绑定,传递Variant类型,在函数内后绑定。
Sorry,理解错了楼主的意思。您可以无视第二种方法。
或者:
用Friend替换Public来声明你的CC函数,因为你的函数相对于你的程序来说并不对外开放。
如果要对外开放,那就要把CC函数封装到ActiveX dll了。