Ocultar todas las columnas excepto las especificadas.
Pude encontrar un código que oculta todas las columnas especificadas para un informe en el trabajo que estoy tratando de automatizar poco a poco. El informe en cuestión tiene alrededor de 20 columnas y solo necesito realmente 8 de ellas.
Puedo usar fácilmente el código para escribir alrededor de 12 líneas y ocultarlas. Sin embargo, parece que sería más fácil de leer y mucho más eficiente escribir el código opuesto. Soy bastante nuevo en VBA y este es mi primer proyecto real en el que puedo usar el programa hasta ahora.
Proyecto actual:
Sub Ocultar_Columnas()
Dim UltimaColumna As Long
UltimaColumna = Cells(3, Columns.Count).End(xlToLeft).Column
For i = 1 To UltimaColumna
If Cells(3, i).Value = "Nombre del Cliente" Or Cells(3, i).Value = "Dirección" Or Cells(3, i).Value = "Número de Teléfono" o ... 'continuar perpetuamente
Then Columns(i).Hidden = True
Next
End Sub
davy.ai
Parece que has encontrado un código que puede ocultar columnas específicas en Excel. Sin embargo, solo necesitas 8 de las 20 columnas en tu informe y te preguntas si sería más fácil escribir el código inverso para mostrar solo las 8 columnas que necesitas. Como principiante en VBA, este es tu primer proyecto real donde puedes usar el programa. Actualmente, tu código se ve así:
Puede ser más eficiente escribir un código que muestre explícitamente solo las 8 columnas que necesitas, en lugar de ocultar las columnas restantes. Aquí tienes un ejemplo de cómo puedes modificar tu código para lograr eso:
En este código modificado, la subrutina
Mostrar_Columnas
recorre todas las columnas de la hoja de cálculo activa y verifica si el valor del encabezado de la tercera fila coincide con alguno de los nombres de encabezado en el arregloencabezados
(que contiene los 8 encabezados que necesitas). Si hay una coincidencia, se muestra la columna (es decir, se establece la propiedadHidden
enFalse
) y se incrementa un contadoridx
. Si no hay coincidencia, se oculta la columna (es decir, se establece la propiedadHidden
enTrue
). El bucle se detiene temprano cuando se muestran todas las columnas necesarias.Este código es más eficiente porque solo necesita mostrar las columnas que necesitas, en lugar de ocultar las demás columnas, lo que podría llevar más tiempo de procesamiento. También es más fácil de entender y mantener, ya que los encabezados se enumeran explícitamente en un arreglo.