VBA para ordenar hojas alfabéticamente

Índice
  1. VBA para ordenar las hojas de trabajo alfabéticamente
  2. Adaptando el código
    1. invertir el orden
    2. Cambiar el libro de trabajo
    3. Ordenar números como números
    4. Ordenar hojas en lugar de hojas de trabajo

Cuando se trabaja con Excel, el orden de las hojas de trabajo es importante. Las pestañas deben reflejar el flujo que un usuario pueda entender. Dado que no existe una función nativa para hacerlo, usar VBA para acortar las hojas alfabéticamente puede resultar útil para ahorrar tiempo.

Pero las cosas nunca son tan sencillas, ¿verdad?

  • La clasificación puede realizarse en orden estándar o inverso.
  • En Excel, las hojas y las hojas de cálculo son diferentes. Las hojas de trabajo son solo aquellas que tienen celdas, mientras que las hojas pueden incluir hojas de trabajo y hojas de gráficos.
  • Los nombres de las hojas de trabajo que contienen números no se ordenan como números sino como texto

En este post te daré el código necesario para afrontar todas estas situaciones.

Tabla de contenido
  • VBA para ordenar las hojas de trabajo alfabéticamente
  • Adaptando el código
    • invertir el orden
    • Cambiar el libro de trabajo
    • Ordenar números como números
    • Ordenar hojas en lugar de hojas de trabajo

VBA para ordenar las hojas de trabajo alfabéticamente

Ingrese el siguiente código en un módulo de código estándar:

Sub SortWorksheetsAlphabetially()'Apagar la actualización de pantallaApplication.ScreenUpdating = False'Crear variablesDim wb As WorkbookDim wsCount As IntegerDim i As IntegerDim j As Integer'Declarar el libro de trabajoSet wb = Workbooks(ActiveWorkbook.Name)'Cuenta el número de hojas de trabajowsCount = wb.Worksheets .Count'Recorre todas las hojas de trabajo y mueveFor ​​i = 1 To wsCount - 1 For j = i + 1 To wsCount Si wb.Worksheets(j).Name wb.Worksheets(i).Name Entonces wb.Worksheets(j).Move antes:=wb.Worksheets(i) Finalizar si es siguiente jSiguiente i'Activar la actualización de pantallaApplication.ScreenUpdating = TrueEnd Sub

Adaptando el código

El ejemplo específico anterior colocará las hojas de trabajo del libro activo en orden alfabético. Pero podemos personalizar esto de muchas maneras:

  • invertir el orden
  • Aplicar a otros libros de trabajo
  • Ordenar números como números
  • Ordenar incluyendo hojas de gráficos

Echemos un vistazo a estas opciones por separado.

invertir el orden

Para invertir el orden, cambiamos el signo lógico de dirección.

Cambie esta línea de código:

Si wb.Worksheets(j).Nombrewb.Worksheets(i).Nombre Entonces

a esto:

Si wb.Worksheets(j).Nombrewb.Worksheets(i).Nombre Entonces

Cambiar el libro de trabajo

El código VBA también se puede cambiar para que funcione en cualquier libro abierto.

Libro de trabajo activo:

Este es el código utilizado actualmente en el ejemplo. Si desea cambiar el código, cambie esta línea a una de las siguientes.

Establecer wb = Libros de trabajo (ActiveWorkbook.Name)

Libro de trabajo con nombre:

Establecer wb = Libros de trabajo ("Nombre del libro de trabajo.xlsx")

Recuerde cambiarWorkbookName.xlsx por el nombre de su libro de trabajo.

Enésimo libro abierto

Establecer wb = Libros de trabajo (1)

El número se refiere a los libros en el orden en que se abrieron, donde 1 es el primer libro, 2 es el segundo libro, etc.

Ordenar números como números

Todos los nombres de las hojas de trabajo son cadenas de texto. Por lo tanto, si tuviéramos hojas llamadas “1”, “2” y “12”, su orden sería “1”, “12” y “2”. Pero podemos cambiar el código básico para ordenar números como números.

Todos los cambios del código original se han resaltado en negrita.

Sub SortWorksheetsAlphabetiallyAndNumerically()'Apagar la actualización de pantallaApplication.ScreenUpdating = False'Crear variablesDim wb As WorkbookDim wsCount As IntegerDim i As IntegerDim j As Integer Dim wsName1 As Variant Dim wsName2 As Variant 'Declarar el conjunto de libros wb = Workbooks(ActiveWorkbook.Name)'Count el número de hojas de trabajowsCount = wb.Worksheets.Count'Recorra todas las hojas de trabajo y muevaFor i = 1 To wsCount - 1 For j = i + 1 To wsCount         'Capturar nombres de hojas de trabajo         wsName1 = wb.Worksheets(i).Name         wsName2 = wb. Worksheets(j).Name         'Convertir números         Si IsNumeric(wsName1) = True Entonces wsName1 = CLng(wsName1)         Si IsNumeric(wsName2) = True Entonces wsName2 = CLng(wsName2)         'Ordenar hojas de trabajo Si wsName2 wsName1 Entonces wb.Worksheets(j) .Mover antes:=wb.Worksheets(i) Finalizar si es siguiente jSiguiente i'Activar actualización de pantallaApplication.ScreenUpdating = TrueEnd Sub

Ordenar hojas en lugar de hojas de trabajo

Como se indicó anteriormente, las hojas de gráficos se incluyen en la colección de hojas, pero no en la colección de hojas de trabajo. Por lo tanto, para incluir hojas de gráficos en el alcance del código, podemos utilizar el siguiente código como base.

Los cambios con respecto al código original se han resaltado en negrita.

Sub SortSheetsAlphabetially()'Apagar la pantalla updateApplication.ScreenUpdating = False'Crear variablesDim wb As WorkbookDim shtCount As IntegerDim i As IntegerDim j As Integer'Declarar el libro de trabajoSet wb = Workbooks(ActiveWorkbook.Name)'Cuenta el número de hojas de trabajo shtCount = wb. Sheets.Count 'Recorre todas las hojas de trabajo y mueveFor ​​i = 1 To shtCount - 1 For j = i + 1 To shtCount         If wb. Hojas (j).Nombre wb. Hojas (i).Nombre Luego wb. Hojas (j). Mover antes:=wb. Hojas (i) Finalizar si es siguiente jSiguiente i'Activar actualización de pantallaApplication.ScreenUpdating = TrueEnd Sub

También se pueden realizar en este código las mismas modificaciones para ordenar inversamente, ordenar números y ordenar otros libros.

Artículos Relacionados:

  • Ocultar todas las hojas excepto una con Office Scripts
  • Recorrer hojas seleccionadas con VBA
  • Propiedades y métodos comunes de VBA para hojas de trabajo
  • 30 macros VBA listas para usar

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...