Ocultar columnas

Feliz Año para ti también! Respecto a tu pregunta, supongo lo siguiente:los datos se vuelcan en la columna A, y ésta tiene siempre un encabezado(es decir, al menos una celda de la columna está escrita). La siguiente macro oculta la columna A si lo único que hay en ella es el encabezado:
Sub OcultarColumna()
If Worksheets("Hoja1").UsedRange.Columns("A:A").Rows.Count = 1 Then Columns("A:A").Hidden = True
End Sub
Si tienes más columnas, sólo tienes que escribir lo mismo para cada una de las que quieras comprobar. Espero haberte solucionado la duda con mi respuesta, de no ser así, no dudes en volverme a preguntar.

1 respuesta

Respuesta
1
Te voy a a dar una nueva macro, pero si quieres que la macro se ejecute al abrir el archivo, debes insertarla de la siguiente manera: ve al aditor de Visual Basic (Alt + F11), pincha sobre el botón de explorador de proyectos, te aparecerá una ventana a la izquierda con todos los libros abiertos, haz doble click sobre el que corresponda donde pone "ThisWorkbook", y allí inserta la siguiente macro:
Private Sub Workbook_Open()
Dim e As Integer
For e = 1 To 70 'columnas
Worksheets("Hoja1").UsedRange.Columns(e).Rows.Select
Dim celda As Range
Dim contador
contador = 0
For Each celda In Selection
If celda.Value <> "" Then contador = contador + 1
Next
If contador = 1 Then Columns(e).Hidden = True
Next
End Sub
No olvides que el el código he puesto "hoja1", y deberás cambiarlo por el nombre de tu hoja, lo mismo donde pone 70, son las columnas, pero si el nº de columnas es otro cámbialo por el que corresponda. Pruébala y me comentas qué te ha parecido. Un saludo, y Feliz Año para ti también.
La macro que me envías hace exactamente lo contrario oculta las celdas que tienen datos. Gracias por tu interés.
Tengo un libro, con 3 hojas, algunas de las columnas, en función de los datos solicitados, quedan vacías, agradecería que me facilitarais una macro que oculte las que estén vacías. Feliz año nuevo a todos.
Buenas tardes Villaju, creo que no fui demasiado explicito en mi pregunta, tu solución es perfecta, pero para pocas columnas, en mi caso concreto el libro se compone por unas 70 columnas, ¿y lo que me interesaría es que la macro hiciera un? ¿Barrido? Automático y ocultara en el momento de abrir libro todas las que estuvieran vacías. Muchas gracias por tu ayuda
¿Cómo?! Yo la he probado, y oculta las columnas que NO tienen datos, no entiendo que a ti te haga lo contrario. Como te avisé en la primera respuesta, estoy suponiendo que hay encabezados de las columnas. Lo que hace la macro es lo siguiente:1º mira cuántas filas tiene el rango usado en la hoja, y después, por cada columna, hace lo siguiente: hay un contador que al principio tiene valor cero, se recorren las celdas de cada columna una a una, y si la celda tiene un valor distinto de cero, el contador aumenta una unidad. Por eso, si sólo hay un encabezado, el contador tendrá un valor = 1, y por tanto la columna se oculta. Si el contador es mayor a 1, entonces es que hay datos, y por tanto no se ocultan. No se donde puede estar el error que te da a ti, pues funciona perfectamente: comprueba que el código lo has copiado bien (puedes seleccionarlo, dar a Control+C, y luego pegarlo en tu libro), comprueba que hay encabezamiento en todas las columnas, advertirte también que lo que no hace esta macro es desocultar columnas, es decir, las que estaban ocultas al abrir el libro se quedan así (no me pediste que se desocultaran). En serio, míralo bien, porque la macro es correcta. Si a pesar de todo no encuentras el fallo, mándame el archivo a jherranzvillasol hotmail.com(inserta un arroba en el espacio en blanco). Bueno, ya me comentarás.
Te pido mil disculpas, se me paso tu advertencia que las columnas tenían que tener encabezado, en mi caso no todas las tienen, más bien lo contrario. Lamento haberte hecho perder el tiempo, te agradecería, si es posible, que me facilitaras un macro con estas características. Repito lamento profundamente no haber estado a la altura de tu dedicación.
Funciona, muchas gracias por tu dedicación y paciencia.
Aquí te mando la macro modificada, pruébala y me cuentas, ¿OK?
Private Sub Workbook_Open()
Dim e As Integer
Dim i
Dim filas
Dim filas2
filas = Worksheets("Hoja1").UsedRange.Rows.Count
filas2 = Worksheets("Hoja1").UsedRange.Cells(1).Row
For e = 1 To 70 'columnas
Dim celda As Range
Dim contador
contador = 0
Worksheets("Hoja1").Columns(e).Cells(filas2).Activate
For i = 1 To filas
If ActiveCell.Value <> "" Then contador = contador + 1
ActiveCell.Offset(1, 0).Activate
Next
If contador = 0 Then Columns(e).Hidden = True
Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas