Si está trabajando en un proyecto que usa muchas hojas de trabajo en un libro, es posible que desee ordenarlas por nombre de hoja de trabajo. La siguiente macro breve funcionará muy bien:

Sub SortSheets()

Dim I As Integer, J As Integer

For I = 1 To Sheets.Count - 1         For J = I + 1 To Sheets.Count             If UCase(Sheets(I).Name) > UCase(Sheets(J).Name) Then                 Sheets(J).Move Before:=Sheets(I)

End If         Next J     Next I End Sub

Esta macro funciona si tiene un número relativamente bajo de hojas de trabajo en su libro. Si, cuando ejecuta la macro, observa que lleva mucho tiempo ejecutarla, es posible que desee utilizar un algoritmo de clasificación más eficaz en la macro. Por ejemplo, la siguiente es una versión que lee los nombres de todas las hojas de trabajo en una matriz, ordena la matriz usando el algoritmo BubbleSort y luego hace la disposición real:

Sub SortSheets()

Dim I As Integer     Dim sMySheets() As String     Dim iNumSheets As Integer

iNumSheets = Sheets.Count     Redim sMySheets(1 To iNumSheets)



For I = 1 To iNumSheets         sMySheets(I) = Sheets(I).Name     Next I

BubbleSort sMySheets

For I = 1 To iNumSheets         Sheets(sMySheets(I)).Move Before:=Sheets(I)

Next I End Sub
Sub BubbleSort(sToSort() As String)

Dim Lower As Integer, Upper As Integer     Dim I As Integer, J As Integer, K As Integer     Dim Temp As String

Lower = LBound(sToSort)

Upper = UBound(sToSort)

For I = Lower To Upper - 1         K = I         For J = I + 1 To Upper             If sToSort(K) > sToSort(J) Then                 K = J             End If         Next J         If I <> K Then             Temp = sToSort(I)

sToSort(I) = sToSort(K)

sToSort(K) = Temp         End If     Next I End Sub

Cualquiera que haya programado durante algún tiempo sabe que BubbleSort es una buena rutina de clasificación de propósito general, pero hay otras más rápidas disponibles.

Por ejemplo, si tiene bastantes hojas de trabajo y comienzan muy desorganizadas, puede encontrar que el algoritmo QuickSort es más beneficioso. Todo lo que necesita hacer para cambiar lo anterior para usar QuickSort es agregar el algoritmo QuickSort como una subrutina (puede encontrar el algoritmo en cualquier buen libro de programación de Visual Basic) y luego llamar al procedimiento desde la macro principal de SortSheets. (Esto significa cambiar la línea donde ahora se llama BubbleSort.)

Hay otra diferencia entre esta segunda macro y la primera. La primera macro no presta atención al caso del texto utilizado para nombrar sus hojas de trabajo. Por lo tanto, Mi hoja de trabajo se vería igual que MI hoja de trabajo. La segunda macro presta atención a las mayúsculas y minúsculas del texto y ordena en consecuencia. Por supuesto, este no es un problema particularmente importante, ya que Excel tampoco presta atención al caso en los nombres de las hojas de trabajo.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (1959) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posteriores) aquí:

link: / excelribbon-Alphabetizing_Worksheet_Tabs [Pestañas de la hoja de trabajo de alfabetización].