How to return multiple value from a function in VB 6.0
Any suggestion sir/madam?
How about arrays?
Private Function ReturnArrays(SomeArgs As String) As String()
'Code goes here
End Function
You can also use user define types and even classes.
@jhai salvador
Thanks for replying, Yes, it can be done using array. I have tried like this
Form1
Private Sub Command1_Click()
Text2.Text = ReturnPrevCurNxt(Val(Text1.Text))(0)
Text3.Text = ReturnPrevCurNxt(Val(Text1.Text))(1)
Text4.Text = ReturnPrevCurNxt(Val(Text1.Text))(2)
End Sub
Module1
Function ReturnPrevCurNxt(x As Integer)
Dim arr(0 To 2) As Double
arr(0) = x - 1
arr(1) = x
arr(2) = x + 1
ReturnPrevCurNxt = arr
End Function
But, I have not tried using user define type or classes yet.
This an example about struct of employee combining with array
Module1
Public Type Employee
EmpNo As Integer
EmpName As String
EmpPhone As String
End Type
Public Sub SetEmployee(ByRef emp() As Employee, ByVal i As Integer)
ReDim emp(i)
End Sub
Public Sub SetEmpData(ByRef emp() As Employee, ByVal i As Integer, ByVal no As Integer, ByVal name As String, ByVal phone As String)
emp(i).EmpNo = no
emp(i).EmpName = name
emp(i).EmpPhone = phone
End Sub
'GetEmpData will return array containing employee details
Public Function GetEmpData(ByRef emp() As Employee, ByVal i As Integer) As Employee
GetEmpData = emp(i)
End Function
Form1
All inputs will use inputbox and just add two button for set and get employee details
Dim NewEmp() As Employee ' declare array as struct of employee
Dim i As Integer
Private Sub Command1_Click()
' how many employee to add
temp = InputBox("How many employee ?")
SetEmployee NewEmp, Int(temp - 1)
' add employee detail
For i = 0 To UBound(NewEmp)
EmpNos = InputBox("Emp " & i + 1 & " No")
EmpNames = InputBox("Emp " & i + 1 & " Name")
EmpPhones = InputBox("Emp " & i + 1 & " phone")
SetEmpData NewEmp, i, EmpNos, EmpNames, EmpPhones
Next
End Sub
Private Sub Command2_Click()
' Extract detail of employee for each array
For i = 0 To UBound(NewEmp)
MsgBox GetEmpData(NewEmp, i).EmpNo & "," & GetEmpData(NewEmp, i).EmpName & "," & GetEmpData(NewEmp, i).EmpPhone
Next
End Sub
JX_man, thanks for your example sir.
I have done with my previous example. Its working nicely.
Module1
Type UDT
a As Integer
b As Integer
c As Integer
End Type
Public Function ReturnPrevCurNxt(x As Integer) As UDT
ReturnPrevCurNxt.a = x - 1
ReturnPrevCurNxt.b = x
ReturnPrevCurNxt.c = x + 1
End Function
form1
Private Sub Command1_Click()
Text2.Text = ReturnPrevCurNxt(Val(Text1.Text)).a
Text3.Text = ReturnPrevCurNxt(Val(Text1.Text)).b
Text4.Text = ReturnPrevCurNxt(Val(Text1.Text)).c
End Sub
So, I am going to closed this thread as it has solved.
Thank you all
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.