CodeBlue
CodeBlue

Reputation: 15389

Returning User defined types from Functions in VB6

I am new to VB. I read online that in order to return from a function, you do something as follows -

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

My question is, does this syntax also work for user defined types? If not, what is the syntax. I tried the following -

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

But this gives me an error on the above line - "object variable or with block variable not set".

What am I doing wrong here?

Upvotes: 4

Views: 6314

Answers (2)

virtual_programmer
virtual_programmer

Reputation: 31

// 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) 

Upvotes: 0

MicSim
MicSim

Reputation: 26796

I suppose clsDetails is not a UDT, but a class. For variables defined as objects you need to use the SET keyword. I.e.:

set getDetails = details

For details using UDTs as function return values or parameters, see: User Defined Type (UDT) as parameter in public Sub in class module (VB6).

Upvotes: 9

Related Questions