ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Returning Multiple Arguments from an Excel VBA Function (https://www.excelbanter.com/excel-programming/314222-returning-multiple-arguments-excel-vba-function.html)

aussie_craig[_4_]

Returning Multiple Arguments from an Excel VBA Function
 

Hi Again.
I had such a good response last time I thought I would ask you gurus
another one.

I have written some VBA code to manipulate some strings in a
spreadsheet.
It works well but is getting quite long, and I am beginning to reuse
parts of it. So I thought I would break one part into a function.

I would like to pass 1 string argument to my function, perform some
fairly intensive operations on the string and return with 2 string
arguments.
I think its possible to return with two argumnets - but the syntax has
thrown me.

I think it has something to do with dimensioning the Function name as a
Variant or a 2 element array ?

Here's a rough example along the lines of what I want:

Sub Blah()

MyString = "123456"
AddressSplit (MyString)

End Sub

Function AddressSplit (TargetString)
AddressSplit(1) = "Test1"
AddressSplit(2) = "Test2"

End Function


How do I return the 2 arguments to the Main Subroutine so I can use
them ?
Thanks in Advance for any help.


--
aussie_craig
------------------------------------------------------------------------
aussie_craig's Profile: http://www.excelforum.com/member.php...o&userid=15491
View this thread: http://www.excelforum.com/showthread...hreadid=271071


Robin Hammond[_2_]

Returning Multiple Arguments from an Excel VBA Function
 
Craig,

It's probably more sensible to use a sub. e.g.

Sub Test()
Dim strFirstName As String
Dim strLastName As String
SplitExample "Robin Hammond", strFirstName, strLastName
MsgBox "First Name: " & strFirstName
MsgBox "Last Name: " & strLastName
End Sub

Sub SplitExample(ByVal strInput As String, ByRef strFirstName As String, _
ByRef strLastName As String)
strFirstName = Left(strInput, InStr(strInput, " ") - 1)
strLastName = Mid(strInput, InStr(strInput, " ") + 1)
End Sub

Robin Hammond
www.enhanceddatasystems.com

"aussie_craig" wrote in message
...

Hi Again.
I had such a good response last time I thought I would ask you gurus
another one.

I have written some VBA code to manipulate some strings in a
spreadsheet.
It works well but is getting quite long, and I am beginning to reuse
parts of it. So I thought I would break one part into a function.

I would like to pass 1 string argument to my function, perform some
fairly intensive operations on the string and return with 2 string
arguments.
I think its possible to return with two argumnets - but the syntax has
thrown me.

I think it has something to do with dimensioning the Function name as a
Variant or a 2 element array ?

Here's a rough example along the lines of what I want:

Sub Blah()

MyString = "123456"
AddressSplit (MyString)

End Sub

Function AddressSplit (TargetString)
AddressSplit(1) = "Test1"
AddressSplit(2) = "Test2"

End Function


How do I return the 2 arguments to the Main Subroutine so I can use
them ?
Thanks in Advance for any help.


--
aussie_craig
------------------------------------------------------------------------
aussie_craig's Profile:
http://www.excelforum.com/member.php...o&userid=15491
View this thread: http://www.excelforum.com/showthread...hreadid=271071




NickHK

Returning Multiple Arguments from an Excel VBA Function
 
Craig,
You can return an array from a function:

Private Sub CommandButton1_Click()
MsgBox AddressSplit ("qwerty")(0)
End Sub

Private Function AddressSplit (argStr As String) As String()
Dim RetArr(1) As String

RetArr(0) = Left(argStr, 3)
RetArr(1) = Mid(argStr, 4)
AddressSplit = RetArr
End Function



"aussie_craig" wrote in message
...

Hi Again.
I had such a good response last time I thought I would ask you gurus
another one.

I have written some VBA code to manipulate some strings in a
spreadsheet.
It works well but is getting quite long, and I am beginning to reuse
parts of it. So I thought I would break one part into a function.

I would like to pass 1 string argument to my function, perform some
fairly intensive operations on the string and return with 2 string
arguments.
I think its possible to return with two argumnets - but the syntax has
thrown me.

I think it has something to do with dimensioning the Function name as a
Variant or a 2 element array ?

Here's a rough example along the lines of what I want:

Sub Blah()

MyString = "123456"
AddressSplit (MyString)

End Sub

Function AddressSplit (TargetString)
AddressSplit(1) = "Test1"
AddressSplit(2) = "Test2"

End Function


How do I return the 2 arguments to the Main Subroutine so I can use
them ?
Thanks in Advance for any help.


--
aussie_craig
------------------------------------------------------------------------
aussie_craig's Profile:

http://www.excelforum.com/member.php...o&userid=15491
View this thread: http://www.excelforum.com/showthread...hreadid=271071





All times are GMT +1. The time now is 05:04 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com