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

変数の宣言は、おそらく予想とは異なることをします。試す:

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

宣言では、Variant型とClass1型の2つの変数を作成します。

于 2012-06-28T18:41:19.540 に答える
1

ステファンの答えは正しいですが、他にも問題があります。

これはどういう意味ですか?

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

このようなコンマで2つのステートメントを区切ることはできません。これですか?

budgeunit.addtochildren lvl1p
budgeunit.addtochildren lvl1m

また、関数の使用法を修正し、おそらくそれらをSubsに置き換える必要があります。あなたはそれらからの出力を期待していないので...

もう1つは、括弧の使用です。subs(および戻り値が期待されない関数)への引数は、括弧で囲まないでください。場合によっては、括弧を付けると問題が発生します。(表記を使用する場合は、ある程度の資格がCallありますが、使用しません。)

于 2012-06-28T18:54:49.530 に答える