View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Tom Ogilvy Tom Ogilvy is offline
external usenet poster
 
Posts: 6,953
Default Type Mismatch: array or user defined type expected

EBITDAArray isn't a variant array - it is a variant that contains an array.
So change the declaration in the sort Sub.

Sub Main()
Dim EBITDAArray As Variant
Dim X As Double
Dim NumberOfRuns As Double
NumberOfRuns = 20
ReDim EBITDAArray(1 To NumberOfRuns - 1)
For X = 1 To NumberOfRuns - 1
EBITDAArray(X) = Int(Rnd() * 1000 + 1)
'Populate Array with code
Next

Call Sort(NumberOfRuns - 1, EBITDAArray)
For X = 1 To NumberOfRuns - 1
Debug.Print EBITDAArray(X)
Next
End Sub

Sub Sort(n As Double, arr As Variant)

Dim Temp As Double
Dim i As Long
Dim j As Long

For j = 2 To n
Temp = arr(j)
For i = j - 1 To 1 Step -1
If (arr(i) <= Temp) Then GoTo 10
arr(i + 1) = arr(i)
Next i
i = 0
10 arr(i + 1) = Temp
Next j

End Sub

--
Regards,
Tom Ogilvy


"ExcelMonkey" wrote:

I have an array that I am trying to sort. I keep getting an this compile
error:
"Type Mismatch: array or user defined type expected "
on the line Call Sort(NumberOfRuns - 1, EBITDAArray). It highlights the
EBITDAArray.

Why is this? Thanks

Sub Main ()
Dim EBITDAArray as Variant
Dim X as Double
Dim NumberOfRuns as Double

For X = NumberOfRuns - 1
'Populate Array with code
Next

Call Sort(NumberOfRuns - 1, EBITDAArray)
End Sub

Sub Sort(n As Double, arr() As Variant)

Dim Temp As Double
Dim i As Long
Dim j As Long

For j = 2 To n
Temp = arr(j)
For i = j - 1 To 1 Step -1
If (arr(i) <= Temp) Then GoTo 10
arr(i + 1) = arr(i)
Next i
i = 0
10 arr(i + 1) = Temp
Next j

End Sub