1

我创建了一个名为 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
4

2 回答 2

1

Stefan 的回答是正确的,但也存在其他问题。

这应该是什么意思?

budgeunit.addtochildren (lvl1p), budgeunit.addtochildren(lvl1m)

你不能用这样的逗号分隔两个语句。你是这个意思吗?

budgeunit.addtochildren lvl1p
budgeunit.addtochildren lvl1m

此外,您应该修改您对函数的使用,并可能用 Subs 替换它们。你不期望他们有任何输出,所以......

另一件事是您使用括号。subs 的参数(以及没有预期返回值的函数)不应被括号括起来;在某些情况下,有括号会使事情出错。(如果您使用Call符号,则有一些限制,但您不使用。)

于 2012-06-28T18:54:49.530 回答
1

您对变量的声明可能与您预期的有所不同。尝试:

Sub Creattree() 
    Dim lvl1p as Class1, lvl1m as Class1, lvl1dm As Class1

在您的声明中,您创建了两个 Variant 类型和 Class1 类型的变量。

于 2012-06-28T18:41:19.540 回答