Function returning array of strings

  • Thread starter Thread starter John
  • Start date Start date
J

John

Hi

I need to return an array of string in my own split function (access 97). I
have defined the function as below but I get err on 'As String()'. What can
I do to make the function return an array of strings?

Public Function Split(ByVal strIn As String, Optional strDelimiter As String
= " ") As String()

Thanks

Regards
 
John wrote in message said:
Hi

I need to return an array of string in my own split function (access 97). I
have defined the function as below but I get err on 'As String()'. What can I
do to make the function return an array of strings?

Public Function Split(ByVal strIn As String, Optional strDelimiter As String
= " ") As String()

Thanks

Regards

Yes, I'm afraid that returning arrays from functions, as far as I've
understood, is a feature included in later versions (2000 and later).

In a97, I think one will need to return a variant.

Here's a function I wrote/adapted some time ago, which can perhaps be a
starting point. I wrote this for a specific purpose, so I don't know
whether it will deal with all possible variations. For instance, it
will
not accept Null (string declaration) ...

Public Function rvsSplit(ByVal v_strInString As String, _
Optional ByVal v_strDelimiter As String = "|")
As Variant
' royvidar
' created 2005-03-09
' purpose: split a string into a variant array for processing
' In this setting, I relax a little on testing, as I'll
' only pass string variables. Use variant and add a test
' with the IsMissing function to use in other context
' parameters:
' v_strInString - string containing text with delimiter
' i e - string to be split
' v_strDelimiter - the delimiter to use in the split
' returns: variant array

Dim lngCounter As Long ' count number of delimiters to redim
array
Dim lngStart As Long ' start position of string to extract
Dim lngStop As Long ' end postition of string to extract
Dim varResult() ' variant array assigned as return value

On Error GoTo rvsSplit_Err

If Len(v_strInString) > 0 Then
lngStart = 1
Do
lngStop = InStr(lngStart, v_strInString, v_strDelimiter)
If lngStop = 0 Then Exit Do
ReDim Preserve varResult(lngCounter)
varResult(lngCounter) = _
Mid$(v_strInString, lngStart, lngStop - lngStart)
lngCounter = lngCounter + 1
lngStart = lngStop + Len(v_strDelimiter)
Loop
ReDim Preserve varResult(lngCounter)
varResult(lngCounter) = Mid$(v_strInString, lngStart)
Else
rvsSplit = Array()
End If
rvsSplit = varResult

rvsSplit_Exit:
Exit Function
rvsSplit_Err:
rvsSplit = vbNullString
Resume rvsSplit_Exit
End Function
 
Hi

I need to return an array of string in my own split function (access 97). I
have defined the function as below but I get err on 'As String()'. What can
I do to make the function return an array of strings?

Public Function Split(ByVal strIn As String, Optional strDelimiter As String
= " ") As String()

Thanks

Regards

Remove the () after As String.
Public Function Split(ByVal strIn As String, Optional strDelimiter As String = " ") As String


Wayne Gillespie
Gosford NSW Australia
 
Remove the () after As String.
Public Function Split(ByVal strIn As String, Optional strDelimiter As String = " ") As String
Forget that. I misread the part about returning a string array. As Roy says this isn't possible in A97 AFAIK.


Wayne Gillespie
Gosford NSW Australia
 
As the others have indicated, Access 97 doesn't let you return a string
array, but you can pass an array as a variant without any problems.

I just tested the following code in Access 97:

Function ReturnArray() As Variant

Dim strArray(1 To 3) As String

strArray(1) = "One"
strArray(2) = "Two"
strArray(3) = "Three"

ReturnArray = strArray

End Function

Sub CallArray()

Dim intLoop As Integer
Dim varReturn As Variant

varReturn = ReturnArray()
For intLoop = LBound(varReturn) To UBound(varReturn)
Debug.Print intLoop & ": " & varReturn(intLoop)
Next intLoop

End Sub

In the Immediate window:

CallArray
1: One
2: Two
3: Three
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top