ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Can't figure out passing and returning arrays (https://www.excelbanter.com/excel-programming/347783-cant-figure-out-passing-returning-arrays.html)

Dave B[_9_]

Can't figure out passing and returning arrays
 
I'm trying to make my function return an array of strings and can't
seem to get it to work. I get Error 9, subscript out of range. The
error occurs on the line "strArray(i) = str"
Here is the relevant part of the code:

Sub CompareLabels(str1 as String)
Dim strWords1() As String
strWords1 = MakeArrayOfWords(str1)
End Sub

Private Function MakeArrayOfWords(ByVal str As String) As String()

Dim i As Integer, intSpace As Integer, intLength As Integer,
strArray() As String
If str < "" Then
Do
i = i + 1
intSpace = InStr(1, str, " ", vbTextCompare)
If intSpace 0 Then
strArray(i) = Left(str, intSpace)
intLength = Len(str) - intSpace
str = Right(str, intLength)
Else
strArray(i) = str
End If
Loop Until intSpace = 0
MakeArrayOfWords = strArray
End If

End Function


Can anyone help? Thanks.

P.S. I suck at working with arrays.


Bob Phillips[_6_]

Can't figure out passing and returning arrays
 
Sub CompareLabels(str1 As String)
Dim strWords1() As String
strWords1 = Split(str1)
End Sub


--
HTH

Bob Phillips

(remove nothere from email address if mailing direct)

"Dave B" wrote in message
oups.com...
I'm trying to make my function return an array of strings and can't
seem to get it to work. I get Error 9, subscript out of range. The
error occurs on the line "strArray(i) = str"
Here is the relevant part of the code:

Sub CompareLabels(str1 as String)
Dim strWords1() As String
strWords1 = MakeArrayOfWords(str1)
End Sub

Private Function MakeArrayOfWords(ByVal str As String) As String()

Dim i As Integer, intSpace As Integer, intLength As Integer,
strArray() As String
If str < "" Then
Do
i = i + 1
intSpace = InStr(1, str, " ", vbTextCompare)
If intSpace 0 Then
strArray(i) = Left(str, intSpace)
intLength = Len(str) - intSpace
str = Right(str, intLength)
Else
strArray(i) = str
End If
Loop Until intSpace = 0
MakeArrayOfWords = strArray
End If

End Function


Can anyone help? Thanks.

P.S. I suck at working with arrays.




Dave B[_9_]

Can't figure out passing and returning arrays
 
Hehehe. Thanks. I will have to tackle my array weakness another day.


Jim Thomlinson[_4_]

Can't figure out passing and returning arrays
 
Purely for reference the array you were trying to create was dynamic. This is
to say that you did not specify the size of the array when you created it. In
this case you need to use "ReDim Preserve" each time you add an element to
the array... Split is the way to go in this case... but for your future
reference, look up "Redim Preserve"
--
HTH...

Jim Thomlinson


"Dave B" wrote:

Hehehe. Thanks. I will have to tackle my array weakness another day.




All times are GMT +1. The time now is 01:10 AM.

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