Macro para ocultar columnas sin datos al cambiar una celda

Tengo una tabla de clientes con diferentes datos y quiero crear una especie de plantilla en la que al elegir un cliente me muestre algunos campos de la tabla, el problema es que son muchos campos y para algunos clientes no todos tienen datos, así que para evitar que se muestren muchas columnas vacías, necesitaría una macro que al cambiar el cliente oculte las columnas que no contienen ningún dato. Haciendo que así solo se muestre la información que se tiene del cliente.

1 Respuesta

Respuesta
1

Tienes varias opciones:

a) Puedes crear una macro que se ejecute con Control+tecla y que oculte las columnas que en la fila seleccionada estén vacías.

b) Puedes crear un evento en la hoja que (p. Ejemplo) al hacer dobleclick en cualquier celda de una fila se oculten las columnas que en esa fila este vacías.

c) Puedes copiar en una hoja nueva los nombres de columna y la fila correspondiente omitiendo las columnas vacías.

Código de la macro; cópialo en un módulo (p.e. Modulo1)

Puedes asignarle una tecla p.e. <Control+o> para ocultar y <Control+m> para mostrar todas

Sub OcultarColumnas()

f = Selection.Row
Set r1 = Cells(1, 1).CurrentRegion
For c = 2 To r1.Columns.Count
If Cells(f, c) = "" Then Cells(f, c).EntireColumn.Hidden = True
Next
End Sub

Sub MostrarTodas()

Set r1 = Cells(1, 1).CurrentRegion
r1.Columns.EntireColumn.Hidden = False
End Sub

Hola,

Utilizo la macro pero no me funciona, solo cambiando el valor c = 2 por c = 1 me funciona pero solo ocultando la primera columna si esta vacía, el resto no se ocultan.

Creo que tiene que ver con la parte de set r1 pero no tengo conocimientos de macros y no se que debería cambiar para que funcione correctamente.

Muchas gracias

Ya has copiado el código en un módulo ¿no? Si no te funciona prueba a grabar una macro cualquiera, para que se active el entorno de macros.

En la pestaña desarrollador, >> grabar macro>> .. en este libro..>> aceptar

Selecciona otra celda cualquiera (p.e. "A7") y pulsa detener macro.

Si ejecutas el macro que acabas de grabar te volverá a seleccionar la celda "A7"

Y espero que ahora, si ejecutas los otros, también te funcionen.

Si, he copiado el código en un modulo y solo funciona si cambio el valor de c por 1  pero en ese caso solo me oculta la columna 1 si esta vacía pero no el resto de columnas.

Ejemplo de Excel

En este enlace te puedes descargar un excel con ejemplo de las tres opciones

La pregunta no admite más respuestas

Más respuestas relacionadas