View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
Tom Ogilvy Tom Ogilvy is offline
external usenet poster
 
Posts: 27,285
Default Help with silly error

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



--
Regards,
Tom Ogilvy

wrote in message
ups.com...
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