¿Cómo hacer para que el área de impresión se la última celta escrita?
Como mis conocimientos de VBA son más bien escasos tengo un problemilla que no se resolver.
Me he hecho un pequeño código para imprimir una hoja de excel que es una tabla dinámica,(resumen de ventas por vendedor) como suele suceder en estos casos uno tiene 9 lineas otro 15 y otro 25, lo que quiero es que siempre me imprima hasta la ultima linea que tenga algo escrito, pues aquí esta el problema por que justo al lado de la tabla tengo una columna con un condicional donde calculo el % de diferencia entre los dos años ( =SI(C20<>"";SI(D20<>"";SI(C20=0;100%;SI(D20=0;-100%;(D20/C20)-100%));-100%);""))en el código que os adjunto veréis que lo que busco es la ultima celda activa y excel entiende como activas todas las celdas que tienen este condicional,(¿389) sabría alguien como debo proceder para que busque la ultima escrita y no la ultima activa?
Mil gracias de Antemano
----------------------------------------
Sub AreaDimpresio()
'Netejo l'area
ActiveSheet.PageSetup.PrintArea = ""
'Selecciono A1
rango1 = Range("A1").Select
rango1 = Selection.Address
'selecciono l'ultima
rango2 = Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
rango2 = Selection.Address
' omplo l'area d'impresio i mostro el missatge
Ans = MsgBox("Se va a imprimir el rango" & " " & rango2, vbYesNo)
' pregunto si o no
'si es "si" imprimeixo
If Ans = vbYes Then
ActiveSheet.PageSetup.PrintArea = rango1rango2
' Imprimeix el rango
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
'si es "no" borro l'area
Else
ActiveSheet.PageSetup.PrintArea = ""
End If
End Sub
Me he hecho un pequeño código para imprimir una hoja de excel que es una tabla dinámica,(resumen de ventas por vendedor) como suele suceder en estos casos uno tiene 9 lineas otro 15 y otro 25, lo que quiero es que siempre me imprima hasta la ultima linea que tenga algo escrito, pues aquí esta el problema por que justo al lado de la tabla tengo una columna con un condicional donde calculo el % de diferencia entre los dos años ( =SI(C20<>"";SI(D20<>"";SI(C20=0;100%;SI(D20=0;-100%;(D20/C20)-100%));-100%);""))en el código que os adjunto veréis que lo que busco es la ultima celda activa y excel entiende como activas todas las celdas que tienen este condicional,(¿389) sabría alguien como debo proceder para que busque la ultima escrita y no la ultima activa?
Mil gracias de Antemano
----------------------------------------
Sub AreaDimpresio()
'Netejo l'area
ActiveSheet.PageSetup.PrintArea = ""
'Selecciono A1
rango1 = Range("A1").Select
rango1 = Selection.Address
'selecciono l'ultima
rango2 = Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
rango2 = Selection.Address
' omplo l'area d'impresio i mostro el missatge
Ans = MsgBox("Se va a imprimir el rango" & " " & rango2, vbYesNo)
' pregunto si o no
'si es "si" imprimeixo
If Ans = vbYes Then
ActiveSheet.PageSetup.PrintArea = rango1rango2
' Imprimeix el rango
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
'si es "no" borro l'area
Else
ActiveSheet.PageSetup.PrintArea = ""
End If
End Sub
1 respuesta
Respuesta de Elsa Matilde
1