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关键字。IE:

set getDetails = details

有关使用 UDT 作为函数返回值或参数的详细信息,请参阅:用户定义类型 (UDT) 作为类模块 (VB6) 中的 public Sub 中的参数

于 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 回答