VBA para ocultar todas las hojas excepto una

Índice
  1. Código VBA básico
  2. Adaptando el código
    1. cambiar la hoja de trabajo
    2. Cambiar el libro de trabajo
    3. Cambiar entre escondido y muy escondido
  3. Creando un procedimiento reutilizable
  4. Notas

Hay una pregunta común que hacen muchos usuarios de Excel: “¿Cómo puedo ocultar todas las hojas excepto una con una macro?”. Entonces, respondamos esa misma pregunta. Primero, compartiré contigo el VBA para ocultar todas las hojas excepto una, y luego el proceso para convertirlo en un bloque de código reutilizable.

Tabla de contenido
  • Código VBA básico
  • Adaptando el código
    • cambiar la hoja de trabajo
    • Cambiar el libro de trabajo
    • Cambiar entre escondido y muy escondido
  • Creando un procedimiento reutilizable
  • Notas

Código VBA básico

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

Sub HideAllWorksheetsExceptOne()'Crear una variable para contener hojas de trabajoDim ws As Worksheet'Crear una variable para contener el nombre de la hoja de trabajo para mantenerDim wsKeepName As String'Almacenar el nombre de la hoja para mantenerwsKeepName = ActiveSheet.Name'Recorrer cada hoja de trabajo en el libro de trabajoPara cada ws In ActiveWorkbook.Worksheets 'Si el ws en el bucle no es la hoja activa, entonces Si ws.Name wsKeepName Entonces 'Ocultar la hoja de trabajo ws.Visible = xlSheetHidden End IfNext wsEnd Sub

Adaptaremos y cambiaremos este código en las siguientes secciones para hacerlo más flexible según nuestras necesidades.

Adaptando el código

El ejemplo específico anterior ocultará todas las hojas excepto la hoja activa dentro del libro activo. Pero puede que eso no sea lo que necesita para su situación. Para esta macro, hay 3 configuraciones diferentes que podemos cambiar:

  • Hoja de trabajo para mantenerse visible
  • Libro de trabajo al que aplicar la macro
  • Hacer hojas de trabajo ocultas o muy ocultas

Echemos un vistazo a estas tres opciones por turno.

cambiar la hoja de trabajo

Para hacer referencia a una hoja de trabajo específica, podemos usar una de las siguientes líneas de código:

Hoja activa:

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.

wsKeepName = ActiveSheet.Nombre

Hoja nombrada:

wsKeepName = "Mi nombre de hoja"

Reemplace MySheetName con el nombre de su hoja.

Posición de la enésima hoja:

wsKeepName = Hojas(1).Nombre

El número se refiere a la posición de la hoja, donde 1 es la primera hoja, 2 es la segunda hoja, etc. Tenga en cuenta que la numeración se refiere a todas las hojas, ya sea que estén ocultas o visibles. Por lo tanto, si Hojas(1) está oculta, no se mostrará en las pestañas en la base de la interfaz de Excel.

Cambiar el libro de trabajo

El código VBA también se puede adaptar para funcionar 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.

Para cada ws en ActiveWorkbook.Worksheets

Libro de trabajo con nombre:

Para cada ws en libros de trabajo ("WorkbookName.xlsx"). Hojas de trabajo

Recuerde cambiar WorkbookName.xlsx por el nombre de su libro de trabajo.

Enésimo libro abierto

Para cada ws en libros de trabajo (1). Hojas de trabajo

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.

Cambiar entre escondido y muy escondido

El ejemplo inicial oculta las hojas de trabajo, lo que significa que el usuario puede mostrarlas con la interfaz estándar. También podemos configurar una hoja de trabajo en xlSheetVeryHidden; éstas no se muestran en la lista de hojas ocultas y solo pueden hacerse visibles mediante métodos más avanzados.

Hacer hojas ocultas

ws.Visible = xlSheetHidden

Hacer sábanas muy escondidas

ws.Visible = xlSheetMuyHidden

Creando un procedimiento reutilizable

A menudo es mejor tener un único bloque de código reutilizable al que podamos pasar variables relevantes; esto es lo que logra el siguiente código. El nombre de la hoja de trabajo, el nombre del libro y la configuración de visibilidad se pasan a la macro como argumentos.

Sub HideAllWorksheetsExceptOne(wsKeepName As String, wbName As String, _ visibilidadType As Long)'Crear una variable para contener hojas de trabajoDim ws As Worksheet'Recorre cada hoja de trabajo en el libro de trabajoPara cada ws en libros de trabajo (wbName).Worksheets 'Si el ws está en el bucle no se especifica la hoja, entonces si ws.Name wsKeepName Then 'Ocultar cada hoja de trabajo ws.Visible = visibilidadType End IfNext wsEnd Sub

No podemos ejecutar este código por sí solo, ya que debemos pasarle variables. El siguiente código muestra un ejemplo de cómo llamar al procedimiento reutilizable. Todos los argumentos entre corchetes a continuación son las tres configuraciones que se aplicarán.

Sub CallTheReusableCode()Llamar a HideAllWorksheetsExceptOne("MySheetName", "WorkbookName.xlsx", xlSheetHidden)End Sub

Notas

Aquí hay algunas cosas a tener en cuenta:

  • Es necesario que haya al menos una hoja de trabajo visible. Si intentamos ocultar la última hoja de trabajo visible, se producirá un error.
    Error al intentar ocultar la última hoja de trabajo
  • Puede que primero sea necesario ejecutar una macro para mostrar todas las hojas de trabajo. Esto asegurará que la hoja de trabajo que se va a conservar no esté oculta.
  • Desde una perspectiva de VBA, Hojas y Hojas de Trabajo no son lo mismo. Sheets es una colección que contiene todas las hojas de trabajo y gráficos. Los ejemplos anteriores se refieren a hojas de trabajo. Si su libro contiene hojas de gráficos, será necesario adaptar aún más el código. Consulte esta publicación para obtener más detalles: La diferencia entre hojas y hojas de trabajo en VBA .

Páginas relacionadas:

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