Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
please include your polulate code. my guess is thats where the problem
is 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 |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thansk Tom. Just realised the sort sub is was used assuming Option Base 1.
If I am using Option Base 0 then I am assuming I have to adjust certain items in the sub. Which ones need adjsuting? Is j = 1? 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 "Tom Ogilvy" wrote: 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 |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
this would be my guess:
Sub Main() Dim EBITDAArray As Variant Dim X As Double Dim NumberOfRuns As Double NumberOfRuns = 5 ReDim EBITDAArray(NumberOfRuns) For X = LBound(EBITDAArray) To NumberOfRuns EBITDAArray(X) = Int(Rnd() * 1000 + 1) 'Populate Array with code Next Call Sort(NumberOfRuns, EBITDAArray) For X = LBound(EBITDAArray) To NumberOfRuns Debug.Print X, 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 = LBound(arr) + 1 To n Temp = arr(j) For i = j - 1 To LBound(arr) Step -1 If (arr(i) <= Temp) Then GoTo 10 arr(i + 1) = arr(i) Next i i = LBound(arr) - 1 10 arr(i + 1) = Temp Next j End Sub -- Regards, Tom Ogilvy "ExcelMonkey" wrote: Thansk Tom. Just realised the sort sub is was used assuming Option Base 1. If I am using Option Base 0 then I am assuming I have to adjust certain items in the sub. Which ones need adjsuting? Is j = 1? 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 "Tom Ogilvy" wrote: 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 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Array problem: Key words-Variant Array, single-element, type mismatch error | Excel Programming | |||
Help: Compile error: type mismatch: array or user defined type expected | Excel Programming | |||
Passing User Defined Type Array to Listbox | Excel Programming | |||
User-defined data type; Error: Only User-defined types... | Excel Programming | |||
Passing an Array of User-Defined Type to an Argument of a Function | Excel Programming |