Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Definir dinámicamente el área de impresión de una hoja

| 2 comentarios

Es preciso mencionar que el desarrollo de una impresión en las distintas herramientas de Microsoft Office no es igual, cada programa perfila un propio modelo y definición del área de impresión debido a la diversidad de tareas que cada uno realiza y M. Excel no es la excepción; al tratarse de una plantilla de celdas en las que progresivamente se agrega información normalmente uno es ignora o no es consciente de qué cantidad de celdas correspondería al tamaño de la hoja de impresión ( A-1, A-2, A-3, A-4, Oficio, etc.) que tenemos, por tanto lo común es que al culminar el llenado de datos se defina el área de impresión determinando que cantidad de celdas, o cuánta área de celdas queremos que sea impreso en nuestra hoja.

Sin embargo, ¿qué sucede cuando se torna repetitivo el proceso de definir nuestra área de impresión?¿Es posible automatizar dicha definición para cada inicio y termino de tareas?  La respuesta a la primera pregunta es naturalmente no veríamos en un  proceso de desperdicio de tiempo en un tareas, que dada su condición de necesaria se torna repetitivo; luego, sí es posible la automatización mediante el uso de Visual Basic App., para ello se procederá a desarrollar el esquema respectivo para la creación de la macro dinámica correspondiente.

En principio haremos uso de la propiedad PrintArea, el objetivo es que conforme ingresemos datos la macro se retroalimentará para definir nuevamente, cada vez que lo necesitamos, la área de impresión:


Private Sub Worksheet_Change(ByVal Target As Range)

ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address
End Sub


 

Primero, nótese que el evento se crea bajo el prefijo private que hará referencia que no se mostrará la macros por defecto, el único acceso sería manual, y esto se usa principalmente para macros que afectan directamente a las hojas(Worksheet); luego, nuestro evento se denomina Worksheet_Change y es necesario esta manera pues hace referencia a la siguiente barra :

Sin t%c3%adtulo11 300x57 Definir dinámicamente el área de impresión de una hoja

(Para mayor visualización de la imagen, hacer click en la misma)

Una vez definido en el pliegue de opciones derecho e izquierdo worksheet y change, podemos proceder a insertar el código anteriormente escrito, donde "byval" hacer referencia a la definición de nuestra variable " as range"; y "UsedRange" hace referencia al rango de la celdas que han sido usadas de esta manera cada vez que nosotros hagamos "doble-click" sobre la hoja de trabajo ( donde hayamos insertado nuestra macro), se ejecutará dicha macro y redifinirá dicha área de impresión como en el siguiente ejemplo:

Sin título2

En dicha imagen, el área de impresión está representado por las líneas punteadas alrededor de las celdas con información que deseamos. Si fuera el caso y nosotros necesitamos insertar más datos y ampliar nuestra área de definición quedaría de la siguiente manera:

Sin título3

Como se puede apreciar, automáticamente el recuadro con las lineas puntadas se expande redefiniendo nuestra área de impresión.

Eso sería todo con respecto al uso de una macro dinámica para definir nuestra área de impresión.

Saludos.

Por: Oliver Giancarlo

2 comentarios

  1. hola,

    como puedo asignar un rango de impresion, donde sea de la A1 hasta la ultima celda con informacion, mas una a la derecha y una a hacia abajo. Muchas gracias por la ayuda de antemano

  2. y si yo quisiera poner un botón que diga "hojas requeridas", al presionarlo surja un cuadro de selección con supongamos del 1 al 20 por así decirlo, y al presionarlo nuestra área de impresión de extienda automáticamente se podría hacer con un código similar?

Deja una respuesta

Los campos requeridos estan marcados con *.