我创建了一个名为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
答案 0 :(得分:1)
您对变量的声明可能与您预期的不同。 尝试:
Sub Creattree()
Dim lvl1p as Class1, lvl1m as Class1, lvl1dm As Class1
在声明中,您创建两个Variant类型的变量,类型为Class1。
答案 1 :(得分:1)
Stefan的回答是正确的,但也有其他问题。
这是什么意思?
budgeunit.addtochildren (lvl1p), budgeunit.addtochildren(lvl1m)
你不能用这样的逗号分隔两个语句。你是说这个吗?
budgeunit.addtochildren lvl1p
budgeunit.addtochildren lvl1m
此外,您应该修改函数的使用,并可能用Subs替换它们。你不期待它们的任何输出,所以......
另一件事是你使用括号。 sub(和没有预期返回值的函数)的参数不应该用括号括起来;在某些情况下,括号会使事情出错。 (如果使用Call
符号,则使用某些限定条件,但不是。{/ p>