Para automatizar la petición de un lector sobre la forma de definir un área de impresión condicionada al valor de unas celdas desarrollaré una macro sencilla de aplicar:
Supondremos que los valores 'cero' que determinan si debe aparecer o no en la impresión se encuentran en la primera fila del área que seleccionaremos.
El código siguiente se incluirá dentro del editor de VBA (Alt+F11) en un módulo, como cualquier otra macro que deseemos ejecutar, lo que nos permitirá ejecutarla en cualquier hoja activa de nuestro libro de Excel:
Con este proceso conseguimos que se evalue la primera fila del rango seleccionado, de tal forma que cuando el valor de las celdas de dicha fila sea 'cero' se proceda a ocultar la columna correspondiente; dejando por último, dicha área seleccionada como el área de impresión
...Tengo un Excel y no quiero imprimir las columnas que tienen importe cero en una columna. He pensado poner el ancho de las columnas a cero. ¿Hay alguna manera de hacerlo automáticamente?... |
Supondremos que los valores 'cero' que determinan si debe aparecer o no en la impresión se encuentran en la primera fila del área que seleccionaremos.
El código siguiente se incluirá dentro del editor de VBA (Alt+F11) en un módulo, como cualquier otra macro que deseemos ejecutar, lo que nos permitirá ejecutarla en cualquier hoja activa de nuestro libro de Excel:
'código VBA que define el área de impresión. Sub Macro1() Dim RngAdI As Range Set RngAdI = Application.InputBox _ (Prompt:="Selecciona el área de impresión", Title:="Área de impresión", Type:=8) ultcelda = Range("XFD1").End(xlToLeft).Column primerafila = RngAdI.Row For c = 1 To ultcelda If Cells(primerafila, c).Value = 0 Then Columns(Cells(primerafila, c).Column).EntireColumn.Hidden = True ActiveSheet.PageSetup.PrintArea = RngAdI.Address End If Next End Sub |
Con este proceso conseguimos que se evalue la primera fila del rango seleccionado, de tal forma que cuando el valor de las celdas de dicha fila sea 'cero' se proceda a ocultar la columna correspondiente; dejando por último, dicha área seleccionada como el área de impresión
Una pregunta si requiero que el rango ingresado con el box ya sea fijo como debo cambiar
ResponderEliminarHola, qué tal estás?
EliminarUn placer saludarte
La acción de ocultar columnas es mediante:
.EntireColumn.Hidden = True
Si quieres ocultar siempre las mismas columnas, entonces, podría ser:
Range("A:C").EntireColumn.Hidden = True
Saludos cordiales