Clasificar los hojas de un libro con VBA en Microsoft Excel
En este artículo, proporcionamos detalles sobre cómo ordenar las hojas de trabajo en el libro de trabajo en orden ascendente o descendente, según el nombre de la hoja de trabajo.
En el libro de trabajo adjunto, hay dos módulos: – El Módulo1 contiene la macro «Ordenar hojas de trabajo» que se asigna al botón «Enviar» en la hoja «Macro».
Esta macro ordena todas las hojas de trabajo excepto la primera hoja de trabajo que es la hoja principal denominada «Macro».
Cuando el usuario hace clic en el botón «Enviar», todas las hojas después de la hoja «Macro» se ordenarán en orden ascendente o descendente según lo elija el usuario en el cuadro combinado.
Module2 contiene dos macros «AscendingSortOfWorksheets» y «DecendingSortOfWorksheets». Al ejecutar la macro «AscendingSortOfWorksheets», ordenará todas las hojas de trabajo presentes en el libro de trabajo en orden ascendente. Al ejecutar la macro «DecendingSortOfWorksheets», ordenará todas las hojas de trabajo presentes en el libro de trabajo en orden descendente.
Explicación lógica
El algoritmo de clasificación de burbujas se utiliza para clasificar las hojas de trabajo en el libro.
El algoritmo de clasificación de burbujas compara cada elemento de la matriz con otro elemento de la matriz y los intercambia según se ordene en orden ascendente o descendente. En cada paso, burbujeará el valor más pequeño o más grande en la parte superior de la matriz. El algoritmo se repite hasta que se ordenan todos los elementos.
En este artículo, nuestro objetivo es ordenar las hojas de trabajo del libro por su nombre. El libro de trabajo que estamos usando consta de diferentes hojas de trabajo con nombres como Panel financiero, Recursos humanos y Panel de ventas.
Para lograr este objetivo, hemos utilizado el algoritmo de clasificación de burbujas para clasificar las hojas de trabajo.
Explicación del código
Macro SortWorksheets
Esta macro se ejecutará cuando el usuario haga clic en el botón enviar. Esta macro ordenará todas las hojas de trabajo en el libro de trabajo por sus nombres, excepto la primera hoja de trabajo en el libro de trabajo. Dependiendo del valor seleccionado por el usuario en el cuadro combinado, ordenará las hojas de trabajo en orden ascendente o descendente.
Para agregar un cuadro combinado, siga los pasos a continuación: -. Vaya a la pestaña Desarrollador> Haga clic en Insertar> Haga clic en el icono del cuadro combinado debajo del control de formulario
-
Haga clic derecho en el cuadro combinado y haga clic en control de formato.
-
Vaya a la pestaña de control, asigne el elemento y vincule el cuadro combinado con la celda XFC1.
ComboBoxValue = Rango («XFC1»). El cuadro combinado de valor en la hoja de trabajo «Macro» está vinculado con la celda XFC1. Entonces, para obtener valor de la celda XFC1, se usa la variable ComboBoxValue.
For i = 2 To SCount – 1 FOR bucle comienza con la variable i, el valor comienza desde 2 ya que queremos excluir la primera hoja de trabajo del libro de trabajo de la clasificación.
Si ComboBoxValue = 1, entonces la condición IF se usa para verificar si ordenar en orden ascendente o descendente. SI el valor de ComboBoxValue es 1, ordene en orden ascendente o en orden descendente.
Hojas de trabajo ordenadas en orden ascendente
Hojas de trabajo ordenadas en orden descendente
AscendingSortOfWorksheets y DecendingSortOfWorksheets
Las macros AscendingSortOfWorksheets y DecendingSortOfWorksheets se pueden ejecutar presionando la tecla de acceso directo Alt + F8 o Ir a la pestaña Desarrollador> Hacer clic en Macro> seleccionar la macro y hacer clic en Ejecutar. Ordenarán todas las hojas de trabajo presentes dentro del libro de trabajo. Estas macros también se pueden ejecutar en otros libros de trabajo.
Hojas de trabajo ordenadas después de ejecutar la macro AscendingSortOfWorksheets
Hojas de trabajo ordenadas en orden ascendente DecendingSortOfWorksheets macro
Siga a continuación el código
Sub AscendingSortOfWorksheets() 'Sort worksheets in a workbook in ascending order Dim SCount, i, j As Integer 'For disabling screen updates Application.ScreenUpdating = False 'Getting total no. of worsheets in workbook SCount = Worksheets.Count 'Checking condition whether count of worksheets is greater than 1, If count is one then exit the procedure If SCount = 1 Then Exit Sub 'Using Bubble sort as sorting algorithm 'Looping through all worksheets For i = 1 To SCount - 1 'Making comparison of selected sheet name with other sheets for moving selected sheet to appropriate position For j = i + 1 To SCount If Worksheets(j).Name < Worksheets(i).Name Then Worksheets(j).Move Before:=Worksheets(i) End If Next j Next i End Sub Sub DecendingSortOfWorksheets() 'Sort worksheets in a workbook in descending order Dim SCount, i, j As Integer 'For disabling screen updates Application.ScreenUpdating = False 'Getting total no. of worsheets in workbook SCount = Worksheets.Count 'Checking condition whether count of worksheets is greater than 1, If count is one then exit the procedure If SCount = 1 Then Exit Sub 'Using Bubble sort as sorting algorithm 'Looping through all worksheets For i = 1 To SCount - 1 'Making comparison of selected sheet name with other sheets for moving selected sheet to appropriate position For j = i + 1 To SCount If Worksheets(j).Name > Worksheets(i).Name Then Worksheets(j).Move Before:=Worksheets(i) End If Next j Next i End Sub
Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.
Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]