Como ajustar el PrintArea y el VpageBreaks para un rango variable?

He estado tratando de hacer que el PrintArea y el VpageBreaks se ajusten con el rango que se este actualmente trabajando, este es el código que tengo:

Sub Saltpg()
    fl = Range("C" & Rows.Count).End(xlUp).Row + 5
    Set rng = Sheets("Datos_Comp").UsedRange
        ActiveWindow.View = xlPageBreakPreview
        ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address
        Set ActiveSheet.VPageBreaks(1).Location = ActiveSheet.UsedRange.Address
End Sub

Pero siempre me sale el error 404 requiriendo un objeto, y dicho error sale en la linea 

Set ActiveSheet.VPageBreaks(1).Location = ActiveSheet.UsedRange.Address

Podrían ayudarme por favor a que mi código haga lo que requiero.

1 respuesta

Respuesta
2

[Hola

La propiedad "VPageBreaks(1).Location" es de solo lectura y tú estás intentando darle un valor. Quizá si explicas que quieres hacer con esa última línea podamos darte alguna alternativa.

Abraham Valencia

Lo que quiero es que esa propiedad tome todo el rango activo, ya que el rango es variable puede ir desde 100 filas hasta 10.000

En tu código hay intentos de hacer ¿algo? Con saltos de página pero también se define el área de impresión, en todo caso lo del área de impresión es simple y ya lo tenías:

 ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address

Eso hace que sea cual sea la cantidad de celdas que usas/ocupas, pues todo será tomado en cuenta para tu impresión.

Lo otro es si tú mismo quieres definir los saltos de página, que es lo que no está tan claro si deseas hacer. De ser sí, pues hay que definir cada cuanta filas y/o si también cada "x" columnas.

Abraham Valencia

Lo que intento hacer es una exportación a PDF (Ya tengo el código para hacer dicha exportación) pero primero quiero organizar los saltos de página ya que lo que se va a exportar es una tabla y si no hago que todos los saltos de página Verticales se ubiquen en la Columna "O" la tabla saldrá por pedazos en diferentes hojas, lo cual no será cómodo para el usuario, espero que me este dando a entender

Suponiendo que no hay datos más allá de la columna "O", que no quieres saltos de pagina verticales (el "último" no es en realidad un salto de página), que no tienes problemas en que los saltos de página horizontales sean "automáticos" (o sea, los que Excel coloca al definir el área de impresión), y que trabajas en la hoja activa, entonces prueba así:

Sub Saltosdepagina()
Dim x As Integer, y As Integer
ActiveWindow.View = xlPageBreakPreview
ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address
Let x = ActiveSheet.VPageBreaks.Count
For y = x To 1 Step -1
    ActiveSheet.VPageBreaks(y).DragOff Direction:=xlToRight, RegionIndex:=1
Next y
End Sub

Comentas

Abraham Valencia

¡Gracias! Me funciona muy bien el código y es justo lo que necesitaba, lamento no haber respondido antes, pero tuve unos problemas, te lo agradezco mucho

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas