Ocultar un Rango en Excel

Hola ... Tengo un problema que no he podido encontrar en Google, así que mi confianza está puesta en vosotros.

Quiero ocultar un rango completo de una Hoja e imprimirlo, pero se me atasca...

Aquí dejo el código:

Sub OcultaCeldasVacias()
'MsgBox Cells(1, 2).Value
Dim celdaInicial
Dim celdaFinal
celdaInicial = Cells(1, 2).Value + 6
celdaFinal = 5000 + 1
For i = celdaInicial To celdaFinal
ActiveSheet.Range(Cells(celdaInicial, 1), Cells(celdaFinal, 12)).EntireRow.hidden = True
Next
End Sub

Creo que es porque comienza a borrar fila a fila...

Gracias

1 respuesta

Respuesta

Para imprimir te comento que solo lo puedes hacer sobre celdas visibles, es decir, debes cambiar el orden, primero escoges el rango, luego imprimes y luego ocultas.

Ahora de lo que veo en tus códigos no estas condicionando el rango, es decir el rango siempre es el mismo solo estas repitiendo muchas veces lo que haces la primera vez, además en tus código no imprimes. Te paso un código que va de 5 en 5 imprimiendo rangos determinados y ocultándolos.

Sub Imprime_oculta()
filainicial = 1
For i = 1 To 5000
filafinal = filafinal + 5
Range("A" & filainicial & ":D" & filafinal).Select
Selection.PrintOut Copies:=1
Rows(filainicial & ":" & filafinal).EntireRow.Hidden = True
filainicial = filainicial + 5
Next i
End Sub

Gracias por tu interés. Finalmente recurrí a esos viejos papelotes unidos por pegamento en un lateral... (un libro).
Cuando
uno trata de plantear algo, como siempre lo hace desde el problema, y
terminas por explicarte mal. Aquí 'meando' cantando el 'mea culpa' por
no expresarme bien. Mil disculpas.
Yendo al 'meollo' del asunto..., no quería imprimir unas celdas ocultas, me había expresado mal, pretendía -> ocultar celdas vacías antes de imprimir
<- para que no imprimera hojas y hojas de fórmulas sin datos con
formato de tabla, por lo que termina imprimiento las filas de datos
vacías y convirtiendo el informe en 'papel para reciclar'.
Bueno encontré la solución, es esta y comento el código para que sea claro.
Vamos a ello:

Sub OcultaCeldasVacias()
'Aquí se encuentra el número de filas que tienen datos
'simplemente numeramos las filas y lo sacamos con un MAX('Rango')
'MsgBox Cells(1, 2).Value
Dim celdaInicial
Dim celdaFinal
'a la celda inicial le sumamos las celdas que definen la cabecera
celdaInicial = Cells(1, 2).Value + 6
'la celda final, hasta donde hemos definido las últimas fórmulas
celdaFinal = 5000 + 1
'ocultamos las celdas "a capón", si hacemos un for o un while, nos podemos
'ir a jugar una partida de ajedrez y todavía seguirá ocultando filas desde el bucle
ActiveSheet.Range(Cells(celdaInicial, 1), Cells(celdaFinal, 12)).EntireRow.Hidden = True
'Imprimimos
ActiveWindow.Selection.PrintOut
'Y volvemos a mostrarlas
ActiveSheet.Range(Cells(celdaInicial, 1), Cells(celdaFinal, 12)).EntireRow.Hidden = False
'Y habremos hecho un bien a nuestros bosques y vuelto a nuestros orígenes
End Sub

Pues nada más, gracias por tu pronta respuesta, y por tu interés.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas