Establecer el área de impresión

Hola experto, quiero consultar si es posible establecer el área de impresión conuna macro y como seria su rutina. Gracias

1 Respuesta

Respuesta
1

Ok. ¿Pero cómo deseas ingresar los rangos a imprimir?

¿Mediante una consulta en pantalla?

¿Mediante valores anidados en alguna celda como texto?

Ahora si el área de impresión siempre sera la misma, basta con que utilices el grabador de macros

Bueno lo que deseo es que una vez que genere la macro resumen que me facilitaste, luego imprimirla, tomando en cuenta que tiene un titulo en celdas combinadas desde la A5 a la D5 y desde allí hasta la ultima fila con datos, porque puede ser que sea 1 hoja como puede que sean mas de 1.

Entonces quedaria así:

Sub resumen()
'4c7569735f50
Application.ScreenUpdating = False
Worksheets("CtasxPagar").Range("A:D").Clear
Worksheets("CtasxPagar2").Select
Range("B8").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Worksheets("CtasxPagar").Select
[A7] = "Proveedor"
[b7] = "Vencido"
[c7] = "Vencer"
[D7] = "Monto Acum. de Facturas"
Range("A8").Select
ActiveSheet.Paste
Application.CutCopyMode = False
[a8].Select
Range(Selection, Selection.End(xlDown)).Select
Selection.RemoveDuplicates Columns:=1, Header:=xlNo
Range("A8").Select
'realiza suma
Dim b As Long
Dim v As Long
Dim s As Byte
b = Application.WorksheetFunction.CountA(Worksheets("CtasxPagar2").Range("A8:A65535")) + 7
v = Application.WorksheetFunction.CountA(Worksheets("CtasxPagar").Range("A8:A65535")) + 7
If b <= 1 Then Application.ScreenUpdating = True: Exit Sub
Dim base As Range
Dim resumen As Range
For Each resumen In Worksheets("CtasxPagar").Range("A8:" & "A" & v)
For Each base In Worksheets("CtasxPagar2").Range("B8:" & "B" & b)
If resumen = base And base.Offset(0, -1) < Date Then _
resumen.Offset(0, 1) = resumen.Offset(0, 1) + base.Offset(0, 1)
If resumen = base And base.Offset(0, -1) >= Date Then _
resumen.Offset(0, 2) = resumen.Offset(0, 2) + base.Offset(0, 1)
Next
Next
Set base = Nothing
Set resumen = Nothing
Application.ScreenUpdating = True
s = MsgBox("Resumen Completado - deseas imprimirlo ?", vbQuestion + vbYesNo)
If s = 6 Then
Worksheets("CtasxPagar2").Range("A5:" & "D" & v).PrintOut
End If
End Sub

Bien, pero tengo dos paginas después que ejecuto la macro resumen y solo me imprime desde la A5, hasta la D25, cuando debería ser en este caso hasta la D60

Cambia esta linea

Worksheets("CtasxPagar2").Range("A5:" & "D" & v).PrintOut

Por esta

Worksheets("CtasxPagar2"). Range("A5:D60"). PrintOut

Disculpa la insistencia querido amigo, pero no es lo que quiero, lo que quiero es que imprimar o seleccione el rango hasta la ultima fila con información y con este ultimo cambio, solo me sale la primera hoja impresa.

Con esta linea

Worksheets("CtasxPagar2").Range("A5:" & "D" & v).PrintOut

Así como estaba, tomaba todo el rango de datos desde A5 (títulos) hasta la ultima fila de datos en forma secuencial decreciente... si tienes filas vacías entre los datos, solo tomara como ultima la última antes de la siguiente vacía... ¿comprendes?.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas