我创建了一个名为 Class1 的类,在另一个模块中,我想像这样使用类:
Dim budgeunit As Class1
Sub Creattree()
Dim lvl1p, lvl1m, lvl1dm As Class1
Set lvl1p = New Class1
lvl1p.setName ("pear")
Set lvl1m = New Class1
lvl1m.setName ("Mango")
Set budgeunit = New Class1
budgeunit.addtochildren (lvl1p), budgeunit.addtochildren(lvl1m)
End Sub
但是当我编译它时,它突出显示了budgeunit.addtochildren(lvl1m)并说 Byref 论点不匹配。我已经声明了所有论点,我不知道为什么会这样。类代码:
Dim Children() As Class1
Dim Parent() As Class1
Public level As Integer
Public name As String
Function setName(nm As String)
name = nm
End Function
Function addtochildren(node As Class1)
num = Children.Count
ReDim Children(num + 1) As String
Children(num) = node
node.addParent (Me)
End Function
Stefan的回答是正确的,但还有其他问题。
这是什么意思?
budgeunit.addtochildren (lvl1p), budgeunit.addtochildren(lvl1m)
您不能用这样的逗号分隔两个语句。你是说这个吗?
budgeunit.addtochildren lvl1p
budgeunit.addtochildren lvl1m
此外,您应该修改您对函数的使用,并可能将其替换为 Subs。您不希望它们有任何输出,因此...
另一件事是你对括号的使用。subs(以及没有预期返回值的函数)的参数不应用括号括起来;在某些情况下,使用括号会使事情出错。(如果您使用Call
表示法,则有一些限定,而您没有。
您对变量的声明可能与您预期的不同。尝试:
Sub Creattree()
Dim lvl1p as Class1, lvl1m as Class1, lvl1dm As Class1
在声明中,创建两个类型为 Variant 和类型为 Class1 的变量。