Pestañas de la hoja de trabajo de alfabetización (Microsoft Excel)
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]
.