VBA byref 参数不匹配



我创建了一个名为 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 的变量。

相关内容

  • 没有找到相关文章

最新更新