我想将我的一组对象和变量传递给VBA函数,对它进行一些更改并将其作为结果传回。所以我创建了一个示例Class1:
Public pInfo As String
和样本函数:
Public Function populate(someVar As Class1) As Class1
populate.pInfo = someVar.pInfo & " 1 "
End Function
并尝试将其传递给我的函数populate:
Sub test()
Dim v, w As Class1
Set v = New Class1
v.pInfo = "303"
Set w = populate(v) ' ERROR here
End Sub
导致编译错误:byRef参数类型不匹配。
更新。感谢你的帮助,它现在可以编译。
答案 0 :(得分:3)
类型错误
Dim v, w As Class1
此处不直观地w
只有Class1
类型,v
是变体。
要使它们Class1
,你必须:
Dim v As Class1, w As Class1
下面:
Public Function populate(someVar As Class1) As Class1
populate.pInfo = someVar.pInfo & " 1 "
End Function
populate
不是Class1
的实例,您需要创建它:
Public Function populate(someVar As Class1) As Class1
set populate = new Class1
populate.pInfo = someVar.pInfo & " 1 "
End Function
(而不是使用功能,您可能更喜欢v.copyTo(w)
)
答案 1 :(得分:2)
您还需要更正Populate()
方法,如下所示:
Public Function Populate(someVar As Class1) As Class1
Dim z as Class1
Set z = New Class1
z.pInfo = someVar.pInfo & " 1 "
Set Populate = z
Set z = Nothing
End Function
您还需要注意,这将创建Class1
的新实例,因此它不会继承someVar
中的任何其他属性。