4

私はVBを初めて使用します。関数から戻るには、次のように実行することをオンラインで読みました-

Private Function Add(ByVal x As Integer, ByVal y As Integer) As Integer
    Dim Res as integer
    Res = x + y
    Add = Res       ' use the function's name
End Function

私の質問は、この構文はユーザー定義の型でも機能しますか?そうでない場合、構文は何ですか。私は次のことを試しました-

Public Function getDetails() As clsDetails

Dim details As clsDetails

Set details = New clsDetails

With details
   .X = "R"
   .Y = "N"
   .Z = "N"
   ' more code follows
End With

getDetails = details 'gives error-> object variable or with block variable not set

End Function

しかし、これにより、上記の行にエラーが発生します-「オブジェクト変数またはブロック変数が設定されていません」。

私はここで何が間違っているのですか?

4

2 に答える 2

9

clsDetailsはUDTではなく、クラスだと思います。SETオブジェクトとして定義された変数の場合、キーワードを使用する必要があります。すなわち:

set getDetails = details

UDTを関数の戻り値またはパラメーターとして使用する方法の詳細については、クラスモジュール(VB6)のpublic Subのパラメーターとしてのユーザー定義型(UDT)を参照してください。

于 2012-05-23T14:52:07.247 に答える
0
// function definition  
Public Function add(a, b) 
    Dim c As integer
    c=Val(a) + Val(b) 
    add=c
End Function

// function calling 
    x=Text1.Text
    y=Text2.Text
    z=add(x, y) 
    MsgBox (z) 
于 2019-05-16T15:10:30.397 に答える