Hoy vamos a escribir un poco de código en vba. El objetivo que debe cumplir nuestra macro es el de ordenar todas las hojas (o pestañas o tabs) de un archivo de excel, bien sea en orden ascendente o descendente.
Vamos a trabajar con el siguiente archivo de ejemplo:
Como pueden ver, tenemos 10 hojas son los siguientes nombres de ejemplo: X, A, M, W, Q, N, C, I, K, H. Entonces, si todo sale bien con nuestra macro, las hojas deberían quedar en el siguiente orde: A, C, H, I, K, M, N, Q, W, X o al reves, según la opción que seleccionemos.
Vamos a empezar por abrir el editor de vba, para esto utilizamos nuestro teclado digitando: Alt + F11:
Seleccionamos la opción para crear un nuevo módulo y escribimos el nombre de nuestra macro:
Y vamos a escribir nuestras primeras lineas:
En realidad se trata de una sola, lo que pasa es que por medio del caracter _ (guión al piso) podemos hacer que una línea de código muy larga se interrumpa visualmente y continúe en una nueva. Esto nos facilitará la lectura del mismo. }
Por medio de la palabra reservada Dim declaramos una variable que capture el número 1 o 2 en cuadro de diálogo que utilizará el usuario final para definir si quiere que el orden sea ascendente o descendente.
Ahora, declaramos la variable hojas, con la que vamos a capturar el número de hojas que tiene nuestro archivo:
Escribimos las líneas restantes y le agregamos comentarios para documentar:
Ejecutamos nuestra macro (recuerden que lo pueden hacer con la tecla F5 o F8 si lo quieren paso a paso). Al dar F5, vba nos mostrará el cuadro de dialogo siguiente:
Ingresamos el número 2, para realizar un sort descendente, damos clic en aceptar y tenemos:
Y listo, las pestañas de nuestro archivo de excel se encuentran ordenadas de manera descendente.
Este es el código en vba:
Código:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sub ordenar_hojas() | |
Dim orden As Byte | |
Dim hojas As String | |
Dim i As Integer | |
Dim j As Integer | |
ordenar = InputBox("Bienvenido a la macro para ordenar las hojas del archivo. Para iniciar, ingresa:" & _ | |
vbCrLf & vbCrLf & "1: para orden ascendente" & vbCrLf & "2: para orden descendente", "Macro para ordenar las hojas") | |
hojas = Sheets.Count | |
For i = 1 To hojas - 1 'for para iterar en cada una de las hojas | |
For j = i + 1 To hojas 'for para poder realizar la comparación entre las hojas | |
If ordenar = 1 Then 'condicional para ejecutar el código de orden ascendente o descendente | |
If Sheets(j).Name < Sheets(i).Name Then | |
Sheets(j).Move before:=Sheets(i) | |
End If | |
Else | |
If Sheets(j).Name > Sheets(i).Name Then | |
Sheets(j).Move before:=Sheets(i) | |
End If | |
End If | |
Next j | |
Next i | |
End Sub |
Espero les sirva. Hasta una próxima.
No hay comentarios.:
Publicar un comentario