Para resolver este problema podemos usar la propiedad CurrentRegion, que detecta el rango de una tabla, alrededor de la celda actual. Por ejemplo, si tenemos sendas tablas en los rangos [A1:C15] y [F8:G20], y el cursor está en [A1], la propiedad devolverá las coordenadas del primer rango. Si el cursor está en [F10], devolverá las coordenadas del segundo rango. La macro completa sería más o menos así:
Sub Imprimir
rango = Range(“A1”).CurrentRegion.Address
ActiveSheet.PageSetup.PrintArea = rango
ActiveSheet.PrintOut
End Sub
La primera instrucción de esta macro detecta el rango alrededor de la celda [A1] y le aplica la propiedad Address para obtener sus coordenadas. La segunda instrucción establece el rango anterior como área de impresión. Finalmente, procede con la impresión propiamente dicha.
Mientras hacemos pruebas con esta macro, es conveniente reemplazar la última instrucción por ActiveSheet.PrintPreview. Esta instrucción muestra la vista preliminar, lo que nos permite comprobar el funcionamiento de la macro sin desperdiciar papel.