Thread: custom sort
View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
JLGWhiz JLGWhiz is offline
external usenet poster
 
Posts: 3,986
Default custom sort

I think that if you check the value of n immediately after the sort line is
executed, you will find that n = 1. That tells it the order to sort in. In
the VBA help file it states that CustomOrder value is 1-based. which means,
of course, that value must be at least 1. As for the n(5), that is the
expression for the maximum size of your array. Until you loop through your
array, the first use of n will have a value of n = 0 which is the LBound
(lower boundary) and if you fully load the array then the UBound (upper
boundary) of the array would be 5 for a total of six items. You can look
this all up in the VBA help files for more details.

"Dave" wrote:

Hi,
Ok, but it still seems inconsistent to me.
When I use the n=GetCustomListNum then n=5
When I do the sort, OrderCustom:= has to be 6 (n+1)
When I DeleteCustomList, I have to use n (5)

And can you help with the 2nd question regarding declaring simple lists
within the sort method?

Regards - Dave.

"JLGWhiz" wrote:

Arrays are zero based by default, so when you use OrderCustom:=n it sees a
zero.
You can declare it as a base 1 array, but it is just as easy to do what you
did and add 1 where necessary.

"Dave" wrote:

Hi,
XL2003
I was hoping someone could shed some light on this for me.
In the following code, notice that I had to use "n+1" to make it work when
sorting, but just n to delete the custom list.
When I look at the custom list in Tools,Options, I see:

NEW LIST
Mon, Tue, Wed, etc
Monday, Tuesday, Wednesday, etc
Jan, Feb, Mar, etc
January, February, March, etc

For some reason, when actually using the custom list,
XL seems to be counting the "NEW LIST" as number 1, but not so when deleting
or when getting the custom list number.

Application.AddCustomList Array("T", "B", "E")
n = Application.GetCustomListNum(Array("T", "B", "E"))

Range(z).Sort _
Key1:=Range("C2"), Header:=xlNo, OrderCustom:=n + 1

Application.DeleteCustomList n

Is there a way to sort, according to a custom list, without actually
creating an official custom list?
I tried:
Range(z).Sort _
Key1:=Range("C2"), Header:=xlNo, OrderCustomArray("T", "B", "E")
but it gave an error.

Regards - Dave.