Macro para imprimir rango variable

Acudo a uds. Porque necesito de su ayuda, el punto es que tengo un formato que deseo imprimir, este me ocupa de la columna B3 a la celda F3, de ancho, este ancho debe ser fijo, pero en la altura es variable la columna de referencia que es donde pongo datos es la D y quisiera que cuando ocupe unicamente cierta cantidad de filas en D solamente me imprima hasta donde esta ocupada, porque la que actualmente utilizo es la siguiente:

Sub Print_cotizacion()
If MsgBox("¿Desea continuar con la impresión de su cotización?", vbYesNo) = vbNo Then Exit Sub
Dim My_Range As String
On Error Resume Next
'enables error handling
My_Range = "COTIZACIÓN"
Application.Dialogs(xlDialogPrinterSetup).Show
'if Cancel is chosen then InputBox returns empty string
If Len(My_Range) > 0 Then Range(My_Range).PrintOut
If Err > 0 Then MsgBox "Nombre invalido"
End Sub

En donde el rango cotización es el rango B3:F50 y cuando yo imprimo aunque las ultimas celdas no tenga datos siempre saca una hoja en blanco de mas, lo que necesito es que cuando le hoja no tenga datos en las ultimas filas solo me imprima 1 hoja y cuando sea necesario imprima 2 o las que sean necesarias.

3 respuestas

Respuesta
4

Prueba con esta macro y me cuentas:

Sub imprimirarea()
primera = "B3" 
ultima = Range("d65000").End(xlUp).Offset(0, 2).Address
ActiveSheet.PageSetup.PrintArea = primera & ":" & ultima
ActiveSheet.PrintPreview
End Sub

Muchas gracias estimado Luis, por tu tiempo es exactamente lo que buscaba, sin embargo al probarlo me surgió un problema con el que no contaba, y es que usualmente imprimo fotografías entonces el problema es que si la fotografía esta mas abajo que la ultima celda con datos solo imprime la parte de la foto hasta donde esta la ultima celda llena, ¿habrá alguna manera de hacer que el macro tome la ultima celda con dato o la ultima foto?, si no lo hubiere avisame para finalizar y puntualizar, de cualquier manera te agradezco por tu ayuda.

saludos

Pues se me ocurre lo siguiente: Si tuvieras fotos más abajo de la última fila, con esta macro te preguntará cuantas filas quieres agrandarlo para que se imprima tu foto. Si no tienes fotos bastará con pulsar en el cancelar de la pregunta para que no lo tenga en cuenta:

Sub imprimirarea()
primera = "b3" 
mas = InputBox("cuantas líneas quieres de mas en el rango de impresión????")
If mas = Then mas = 0
ultimafila = Range("d65000").End(xlUp).Row + mas
ultima = "f" & ultimafila
ActiveSheet.PageSetup.PrintArea = primera & ":" & ultima
ActiveSheet.PrintPreview
End Sub
Respuesta

¿Si me sale la página previa para imprimir pero me bloquea la macro y no me deja continuar con la impresión como puedo solucionar eso?

Respuesta

Este ejemplo

https://youtu.be/6AlRyi7fOuI

https://youtu.be/EHbOSap0EIQ

https://youtu.be/I0hjW1RqbFk

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas