Help with silly error

F

fisherofsouls

I have a really silly error which is killing me !

When I pass a filled array to a function, it loses all its content once
inside the function, as follows:

*** START CODE SNIPPET

Option Base 1

Sub MyRoutine

ReDim MyArray(3) As Variant

For x = 1 To 3
MyArray(x) = x
Next x

a = bAllFiguresUnique(MyArray()) '<== UBOUND HERE IS 3

End Sub

Function bAllFiguresUnique(ParamArray MyArray() As Variant) As Boolean

bAllFiguresUnique = True

For x = 1 To UBound(MyArray()) '<== UBOUND HERE IS 0
DoEvents
For y = 1 To UBound(MyArray())
DoEvents
If MyArray(x) = MyArray(y) Then
If x = y Then
'Ignore
Else
bAllFiguresUnique = False
Exit Function
End If
End If
Next y
Next x

End Function

*** END CODE SNIPPET

I must be doing something stupid, but I can't work out what !

Thanks in advance for all constructive suggestions.

Nick
 
B

Bob Phillips

This works for me

Sub MyRoutine()

ReDim MyArray(3) As Variant

For x = 1 To 3
MyArray(x) = x
Next x

a = bAllFiguresUnique(MyArray)

End Sub

Function bAllFiguresUnique(MyArray As Variant) As Boolean

bAllFiguresUnique = True

For x = 1 To UBound(MyArray)
DoEvents
For y = 1 To UBound(MyArray)
DoEvents
If MyArray(x) = MyArray(y) Then
If x = y Then
'Ignore
Else
bAllFiguresUnique = False
Exit Function
End If
End If
Next y
Next x

End Function

--

HTH

RP
(remove nothere from the email address if mailing direct)
 
T

Tom Ogilvy

Not sure why you want to use a parameter array, but if you do and this is a
simplified example, then this works:

Option Base 1

Sub MyRoutine()

ReDim MyArray(3) As Variant

For x = 1 To 3
MyArray(x) = x
Next x

a = bAllFiguresUnique(MyArray()) '<== UBOUND HERE IS 3
Debug.Print a
End Sub

Function bAllFiguresUnique(ParamArray MyArray() As Variant) As Boolean

bAllFiguresUnique = True
Debug.Print UBound(MyArray(0)) '<== UBOUND HERE IS 3
For x = 1 To UBound(MyArray(0))
DoEvents
For y = 1 To UBound(MyArray(0))
DoEvents
If MyArray(0)(x) = MyArray(0)(y) Then
If x = y Then
'Ignore
Else
bAllFiguresUnique = False
Exit Function
End If
End If
Next y
Next x

End Function
 
B

Bob Phillips

From his code, I assumed he didn't realy undedrstand how to use arrays, and
thus ParamArray was a mistake , after all it does say array<g>

Bob
 
T

Tom Ogilvy

That would certainly be the more likely scenario and if that is the case,
then the OP probably won't understand my example anyway.

In any event, both contingencies have been covered. Perhaps someone will
think up a third.
 

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

Top