View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Chip Pearson Chip Pearson is offline
external usenet poster
 
Posts: 7,247
Default Sorting combobox elements


I have a page on my web site regarding sorting arrays. See
http://www.cpearson.com/Excel/SortingArrays.aspx . On that page is a
function named QSortInPlace that will sort an array in either
ascending or descending order. The code is too lengthy to post here.
You can either copy the code off the web page or download the bas
module file from http://www.cpearson.com/Zips/modQSortInPlace.zip . If
you download the zip file, save it somewhere, unzip it, and then with
your workbook open, go to VBA, then to the File menu, choose Import
File, and open the unzipped bas file named modQSortInPlace.bas. This
will create a new module in your workbook project.

Documentation is on the web page and also within the bas file.

Once you have the code, you can put the elements in the combobox into
an array, call QSortInPlace to sort the array in either ascending or
descending order, and then reload the array back into the combobox. In
the code, change "ComboBox1" to the name of your combobox.


Dim Arr() As String
Dim N As Long
With Me.ComboBox1
ReDim Arr(0 To .ListCount - 1)
For N = 0 To .ListCount - 1
Arr(N) = .List(N)
Next N
QSortInPlace InputArray:=Arr, _
Descending:=False, CompareMode:=vbTextCompare
.Clear
.List = Arr
End With

Cordially,
Chip Pearson
Microsoft Most Valuable Professional
Excel Product Group, 1998 - 2009
Pearson Software Consulting, LLC
www.cpearson.com
(email on web site)



On Fri, 4 Sep 2009 10:45:02 -0700, Ken Warthen
wrote:

I have a combobox on an Excel 2007 userform to which I'd like to add the
elements of a worksheet range in a sorted order. There may be anywhere from
several hundred to a few thousand items. I'm able to add the items by
iterating through the named range, but users have now requested that the
elements be displayed in alpha or numeric order. I've looked around and
can't find any relatively simple way to do this. Any help will be greatly
appreciated.

Ken