Como Recorrer hojas seleccionadas con VBA
![](https://tutorialesdeexcel.top/wp-content/uploads/2024/01/como-recorrer-hojas-seleccionadas-con-vba.jpg)
Recorrer las hojas de trabajo es una de las acciones m谩s comunes realizadas por quienes usan VBA para automatizar Excel . Sin embargo, no siempre queremos aplicar una macro a cada hoja de trabajo; a veces, solo lo queremos para cada hoja seleccionada. Dependiendo de la acci贸n que se est茅 realizando, esto puede provocar un error.
Esto ocurre cuando la acci贸n s贸lo se puede realizar una hoja a la vez. No es un problema de VBA; Es un problema de Excel. Por ejemplo, si selecciona dos hojas de trabajo e intenta aplicar protecci贸n a la hoja de trabajo, notar谩 que la opci贸n est谩 atenuada.
No se puede hacer en Excel; por lo tanto, no sorprende que tampoco se pueda hacer en VBA.
En los ejemplos de c贸digo siguientes, resolveremos este problema. Primero, veremos c贸mo podemos recorrer las hojas seleccionadas. En segundo lugar, veremos el uso de esta t茅cnica para automatizar acciones que normalmente se aplican hoja por hoja.
Descargue el archivo de ejemplo: 煤nase al programa Insiders gratuito y obtenga acceso al archivo de ejemplo utilizado para esta publicaci贸n.
Nombre de archivo: 0030 Recorrer las hojas seleccionadas con VBA.zip
Tener acceso
Recorrer las hojas de trabajo seleccionadas
Normalmente con VBA, recorrer铆amos las hojas de trabajo de ActiveWorkbook, pero en este escenario, queremos usar el objeto ActiveWindow en su lugar.
ActiveWindow tiene un objeto llamado SelectedSheets, que contiene una matriz de... (隆s铆, lo has adivinado!) las hojas seleccionadas. Perfecto para nuestras necesidades.
El siguiente c贸digo recorre todas las hojas de trabajo seleccionadas:
Sub LoopThroughSelectedSheets()'Crear variable para contener hojas de trabajoDim ws As Worksheet'Recorre cada hoja de trabajo seleccionada para cada ws en ActiveWindow.SelectedSheets 'Realiza acci贸n. Por ejemplo, ocultar las hojas de trabajo seleccionadas ws.Visible = xlSheetVeryHiddenNext wsEnd Sub
Este es el c贸digo b谩sico, por lo que es posible que deba agregar comprobaciones de errores adicionales. Al ocultar hojas de trabajo, por ejemplo, debe haber al menos una hoja visible. Por lo tanto, necesitaremos contar las hojas de trabajo visibles antes de comenzar o ignorar los errores. Las comprobaciones de errores que se aplicar谩n depender谩n de sus requisitos espec铆ficos.
La macro anterior funciona donde se puede realizar la acci贸n mientras se seleccionan otras hojas.
Aplicar acciones de una sola hoja de trabajo con un bucle
Ya que algunas acciones s贸lo se pueden aplicar una hoja a la vez. Para estos, necesitamos cambiar nuestro enfoque. Si tuvi茅ramos que hacer esto manualmente, har铆amos:
- Recuerda qu茅 hojas de trabajo hab铆amos seleccionado
- Aplicar la acci贸n a cada hoja individualmente.
- Vuelva a seleccionar las mismas hojas de trabajo
Bueno, eso es exactamente lo que vamos a hacer, pero con VBA.
Los comentarios en el c贸digo le ayudar谩n a comprender qu茅 hace cada l铆nea de macro.
Sub SingleActionWhenLoopingThroughSelectedSheets()Dim ws As WorksheetDim SheetArray As VariantDim myPassword As Variant'Capture las hojas seleccionadasSet SheetArray = ActiveWindow.SelectedSheets'Recorra cada hoja de trabajo seleccionadaPara cada ws en SheetArray 'Seleccione la hoja de trabajo ws.Seleccione' Realizar acci贸n. por ejemplo, proteger cada hoja ws.Protect Next ws'Volver a seleccionar las hojassheetArray.SelectEnd Sub
Recuerde, dependiendo de la acci贸n que se est茅 realizando, es posible que necesite agregar comprobaciones de errores adicionales.
驴C贸mo hacer que la pantalla deje de parpadear?
Con VBA deber铆amos realizar la mayor铆a de acciones sin seleccionar ni activar nada; hace que la macro sea m谩s eficiente. Sin embargo, con esta soluci贸n, esa no es una opci贸n. Como resultado, la pantalla puede parpadear mientras se ejecuta la macro. Para evitar esto, podemos cambiar la propiedad Application.ScreenUpdating al inicio y al final de la macro.
Inserte lo siguiente directamente despu茅s de que se haya declarado Sub y antes de declarar cualquier variable:
Aplicaci贸n.ScreenUpdating = Falso
Inserte lo siguiente directamente antes de la declaraci贸n End Sub:
Aplicaci贸n.ScreenUpdating = Verdadero
Trabajar con hojas de gr谩ficos
En la mente de Excel, las hojas de gr谩ficos no son lo mismo que las hojas de c谩lculo. Por lo tanto, si tiene hojas de gr谩ficos incluidas en su selecci贸n, es posible que deba realizar una peque帽a modificaci贸n para incluir todos los tipos de hojas.
Cambia esto:
Atenuar ws como hoja de trabajo
A esto:
Atenuar ws como objeto
Conclusi贸n
Entonces ah铆 lo tienes. As铆 es como recorremos las hojas seleccionadas. Tiene algunos problemas potenciales m谩s que recorrer todas las hojas. Pero, al pensar como un humano (despu茅s de todo, lo eres), podemos crear una soluci贸n adecuada.
隆Feliz bucle!
Art铆culos Relacionados:
- Guardar Excel como PDF
Deja una respuesta