Reputation: 15389
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
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
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