This is a great approach! I'm going to give it a whirl. To answer your question, referring to worksheets by name is definitely possible. Paul Lutus wrote: > Craig Moran wrote: > > > Paul- > > I appreciate your input on this and agree with you on the low impact of > > the bubble sort. I have two things in my favor: > > > > 1) I'm not making Excel visible (but I did in the example), so screen > > updating will not slow this down at the GUI level in my production > > code. > > 2) Excel's worksheet limitation is 255, so this type of sort shouldn't > > be too negatively impacted with additional sheets. > > > > Regardless, I'd like to know how someone else would implement this in a > > more Rubyish manner. Keep in mind two things: > > > > 1) The Move function always places the moved worksheet *before* the > > target worksheet and not after. > > 2) Any moved worksheet will change the indexes of other worksheets. > > Okay, then. If all the worksheet names are unique, simply read all the > worksheet names, then sort them in Ruby: > > array.sort.reverse > > "reverse" because the sheets will be inserted at the beginning of the stack, > which means the last item in the array ends up in the first position. > > Then write a routine that moves them in sort order to the beginning of the > worksheet stack. > > array.each do |sheet_name| > # move each sheet from wherever it is now to the beginning of the stack > end > > This would be easier to understand later on, and it's more efficient as the > number of worksheets increases. Also, because you are presently moving the > worksheets as the sort proceeds, it is much slower than simply sorting the > names, which increases the burden created by the bubble sort. > > The name sort would be performed at high speed, then the sheets would be > moved just once at the end of the sort. Much faster, and less > failure-prone. > > Umm, on re-reading your post, I must ask whether the sheets can be referred > to by name. If not, this becomes a bit more difficult, but it is still > feasible. > > -- > Paul Lutus > http://www.arachnoid.com