从VB6中的函数返回用户定义的类型

时间:2012-05-23 14:50:21

标签: function vb6

我是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

但是这给了我上面一行的错误 - “对象变量或没有设置块变量”。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:9)

我认为clsDetails不是UDT,而是一个类。对于定义为对象的变量,您需要使用SET关键字。即:

set getDetails = details

有关使用UDT作为函数返回值或参数的详细信息,请参阅:User Defined Type (UDT) as parameter in public Sub in class module (VB6)

答案 1 :(得分: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)