1、首先在dll声明一个自定义类型
Type pp
a as string
End Type2、模块中声明一个公共集合且加入PP类型的成员
Public PatternCol As New Collection
dim pp1 as ppPatternCol.add pp13、有个函数定义
Public Sub OpenData(dp As pp)end sub4、调用此方法 call OpenData(PatternCol(1))
时出现错误 “BeRef参数类型不符”,难道PatternCol的成员不是pp类型的吗??????????
Type pp
a as string
End Type2、模块中声明一个公共集合且加入PP类型的成员
Public PatternCol As New Collection
dim pp1 as ppPatternCol.add pp13、有个函数定义
Public Sub OpenData(dp As pp)end sub4、调用此方法 call OpenData(PatternCol(1))
时出现错误 “BeRef参数类型不符”,难道PatternCol的成员不是pp类型的吗??????????
修改为:
Public Sub OpenData(byval dp As pp)
'工程1,调试工程。工程2,active dll工程,先生产工程2.dll,
'然后工程1引用工程2。不知道你是不是这样
Dim a As New 工程2Class1'你的类叫做 工程2.Class1
Dim b As 工程2.pp
b.a = ""
a.PatternCol.Add b
Dim xx As 工程2.pp
xx = a.PatternCol(1)
a.OpenData xx为什么非要这么做我也不清楚,反正直接用集合返回是不可以,用个定义好的类型,
或者是Variant类型变量转一次就可以。其实看下面的代码Dim a As New Class1
Dim b As 工程2.pp
b.a = ""
a.PatternCol.Add bDim c As Long
c = 2
a.PatternCol.Add cDim xx As 工程2.ppDim xx2
xx = a.PatternCol(1)xx2 = a.PatternCol(2) 'xx2=2a.OpenData xx集合不但可以往里面添加pp类型,其他类型也可以,我添了一个long类型。
看看msdn里面,集合就是集合,没有限制类型,所以他的返回就是不确定的,返回就是Variant类型,要自己转换。
如果你要做自己的固定类型的集合,需要自己写一个类,在类的接口上做装换。