Como Recorrer hojas seleccionadas con VBA

脥ndice
  1. Recorrer las hojas de trabajo seleccionadas
  2. Aplicar acciones de una sola hoja de trabajo con un bucle
    1. 驴C贸mo hacer que la pantalla deje de parpadear?
    2. Trabajar con hojas de gr谩ficos
  3. Conclusi贸n

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.

Mensaje de error al aplicar protecci贸n

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.

Opci贸n atenuada cuando se aplica a varias hojas

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:

  1. Recuerda qu茅 hojas de trabajo hab铆amos seleccionado
  2. Aplicar la acci贸n a cada hoja individualmente.
  3. 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

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...