Macro de impresión que ajuste solo a celdas con datos

Hola prozac:
Necesito de tu valiosa ayuda! Estoy trabajando en una macro de impresión, misma que se ajuste al rango en donde las filas contengan datos, mismo que siempre sera variable, ya desarrolle una sintaxis, pero al ejecutarla, manda imprimir todas las hojas del rango.
Necesito que me imprima de la fila 1:6 en la parte superior de cada hoja, aunque el resto de hojas no contengan datos, las imprime en blanco y repitiendo encabezado; mi macro es de esta forma
Sub Imprimir_condicionado()
Dim Fila As Integer, Rango As String
For Fila = 1 To 110 Step 40
If Range("A" & Fila) <> "" Then _
Rango = Rango & Range("A" & Fila).Resize(40, 17).Address & ","
Next
If Rango = "" Then Exit Sub
ActiveSheet.PageSetup.PrintArea = Left(Rango, Len(Rango) - 1)
ActiveSheet.PrintOut copies:=1, collate:=True
End Sub
La verdad me urge ajustar esta macro, y me siento desesperado. Se que algo estoy haciendo mal, no soy experto, más bien, admito que soy bastante ignorante en la materia, me gusta mucho, pero sigo siendo muy torpe; admiro mucho a expertos tan destacados como tu. Te agradezco me puedas ayudar y me señales mis errores, aprenderé mucho con eso.
Gracias y saludos
Víctor

1 Respuesta

Respuesta
Bueno en primer lugar encuentro tu código un poco extraño pero es tal vez cuestión de gustos. Personalmente prefiero declarar e inicializar todas las variables.
En tu código ejecutas el bucle for 3 veces en realidad (para los valores de fila 1, 41 y 81). Con ello si hay algo en A1, A41 y A81 respectivamente construyes el string para imprimir, con los valores:
$A$1:$Q$40 $A$41:$Q$80 $A$81:$Q$120
Y eso es lo que te imprimirá. No sé si eso es lo que quieres, pero es lo que hace tu código. Los encabezados, tamaños de página y demás no los toca, así que se imprimen según los tengas predefinidos.
¿Te sirve de pista?
Gracias por tu pronta respuesta prozac; realmente no se como corregir el señalaiento que me haces, me gustaría, si te es posible me ayudes con la sintaxis, tal com tu la redactarías para transcribirla en mi macro, en la fila 1 hasta la cuatro no tengo datos en las celdas, pero tengo elementos gráficos que requiero en las impresiones, y en las filas 5 y 6 tengo encabezados de las columnas, es por eso que requiero que de la fila 1 a la 6 sean los encabezados en cada página de impresión, pero lo más importante es que no siempre serán 2 hojas con datos para imprimir, habrá ocasiones en que serán 4 hojas y otras 1 solamente, es por eso que necesito que determine las variantes según la cantidad de filas que contengan datos, para lo que va a imprimir, actualmente a pesar de que solo sea 1 hoja con datos, me sige generando hasta 4 impresiones solo con el encabezado de la fila 1 a la 6 con y el resto de la hoja en blanco
Lo que te propongo es que distingas los datos que imprimes cada vez. Si por ejemplo son facturas esos datos son las cantidades, importes, descripción de producto... de lo que es encabezado y pie de página que serían el logo de tu empresa, los nombres de las columnas...
Esto último lo puedes hacer en Page Layout/Page Setup/Header and Footer y/o Titles(en principio sin necesidad de macros) solamente teniendo una hoja a parte donde está todo eso. Es como tener una especie de plantilla sobre la que se imprimen los datos que varían cada vez.
Por ejemplo puedes en Custom Header insertar un gráfico (el logo de la empresa) en la parte izquierda de la hoja. Eso estaría en el encabezado y no en los datos que vas recalculando cada vez.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas