Macro para ocultar filas

Vamos a hacer un ejercicio para ocultar filas de una tabla. Quiero aclarar que esto se puede hacer también con los autofiltros de Excel, pero es un buen ejercicio para introducir conceptos de macros y terminología de VBA.

En el ejemplo tenemos una tabla de ventas, y queremos poder seleccionar una familia y que se oculten todas las filas que no sean de esa familia. Y también deberemos poder volver a visualizarlas todas

Recordemos que para poder hacer macros debemos tener la pestaña Desarrollador visible, si no lo está debemos

Ir a Archivo, Opciones, Personalizar cinta de opciones, y en la parte de la derecha activar Desarrollador.

También debemos guardar el archivo como habilitado para Macros. Al guardar como, elegir tipo de archivo:

Abrimos el ejercicio de muestra donde ya tenemos la tabla y un campo que nos pregunta la familia.

Macro para ocultar filas

Debemos añadir un botón que ejecute una macro que oculte las filas que NO son de esa familia

Vamos a la pestaña Desarrollador, Insertar, elegimos la herramienta botón y dibujamos un rectángulo con el botón que nos interesa. Le damos nombre a la macro y pulsamos Nuevo

Se nos muestra el editor de VBA.

La idea es que nos situamos en la casilla B7 y si su familia es igual a la de la casilla B1 la dejamos visible, y si es distinta la borramos

Y luego seguimos con la celda B8, B9, así sucesivamente, hasta que la celda este en vacía, cosa que nos indica que se terminó la tabla. Así pues haremos un bucle que recorra todas las filas de la tabla.

Nos situamos pues en la celda B7

Range(“B7”).Select

Iniciamos un bucle mientras que la celda activa no este vacía. Siempre que iniciemos un bucle, cerrémoslo, y luego insertamos en medio lo que necesitamos

Do While ActiveCell.Value <> “”

Loop

Hacemos que, Si el valor de la celda activa es distinto del valor de la celda B1, entonces

If ActiveCell.Value <> Range(“B1”).Value Then

Ocultemos toda la fila

ActiveCell.EntireRow.Hidden = True

Y cerramos el SI

End if

Ahora debemos avanzar y movernos a la siguiente fila con

ActiveCell.Offset(1, 0).Select

Offset es una instrucción para desplazarnos desde una posición a otra

El procedimiento ha quedado como

Pongo el código entero aquí por si lo quieres copiar, aunque te aconsejo que los escribas para practicar.

Sub OcultarFilas()

Range(“B7”).Select

Do While ActiveCell.Value <> “”

If ActiveCell.Value <> Range(“B1”).Value Then

ActiveCell.EntireRow.Hidden = True

End If

ActiveCell.Offset(1, 0).Select

Loop

End Sub

Vamos a probarlo, volvemos al Excel y pulsamos el botón. Excel filtra y nos muestra solo las filas de la familia seleccionada

Bien para volver a empezar, nos falta un botón que muestre todas las filas. Vamos a Desarrollador, Insertar, dibujamos un botón, le ponemos nombre y pulsamos nuevo para escribir el código

Sub MostrarFilas()

Rows.EntireRow.Hidden = False

End Sub

Si lo probamos deberíamos ver todas las filas

Ahora si elegimos una familia y filtramos vemos solo esa. Si inmediatamente elegimos otra familia y filtramos no vemos nada.

Claro entre el primer y segundo paso se han ocultado filas.

Por lo tanto sugiero que antes de filtrar se muestren todas. Esto lo hacemos insertando la línea

Call MostrarFilas

Como primera instrucción de la macro de OcultarFilas.

Podríamos poner otra vez Rows.EntireRow.Hidden = False, pero una buena práctica es aprovechar el código ya escrito y llamarlo (Call) para que se ejecute.

Un comentario sobre “Macro para ocultar filas”

Deja un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.