Impresión de base de datos con macro, son 500 clientes se imprimen recibos de 60 en 60

Con una molestia tengo un macro que no me corre me tira ERROR DE COMPILACIÓN, lo que necesito es que me imprima recibos por ejemplo un dia imprimimos del cliente 1 al 60 otro día sera del 61 al 143 por ejemplo... Adjunto imagen del macro y del error

Espero tu ayuda mil gracias!

1 respuesta

Respuesta
1

El código está errado. El FOR le falta el TO. Este código te sirve mejor:

Sub Imprimir()
    primera = "B18"
    ultima = Range("D18").End(xlUp).Offset(0, 2).Address
    ActiveSheet.PageSetup.PrintArea = primera & ":" & ultima
    ActiveSheet.PrintPreview
End Sub

Buena tarde te molesto nuevamente, ya que no me funciono como lo esperaba, este es el código que tengo:

Sub imprimir()

inicio = Range("D14").Value   

fin = Range("F14").Value         

For i = inicio To fin             

Range("C5").FormulaR1C1 = i            

 ActiveWindow.SelectedSheets.PrintOutCopies:=1         

 Next         

  Range("C5") = ""

End Sub

Y es el que creo me funciona mejor ya que:

Inicio = elijo desde que numero de cliente empiezo a imprimir

Y en Fin = por consiguiente el ultimo cliente a imprimir

Como son recibos al darle 1 capta los datos del cliente 1 y así va cambiando según lo elija

Mil gracias por tu apoyo!

Ok. Disculpa, no expliqué bien, aunque yo te entendí perfectamente. Así como lo explicas la primera solución mía es más razonable que la tuya, por lo siguiente:

Te digo lo que está malo con tu macro:

1. inicio = Range("D14"). Value: La variable inicio solamente va a almacenar el valor, oye bien, el valor, no la referencia de la celda D14

fin = Range("F14"). Value: La variable “fin” solamente va a almacenar el valor, oye bien, el valor, no la referencia de la celda de la celda F14, o sea, si en la celda D14 está el valor “Juan”, eso es el valor que va a tomar la variable “i”, si no hay entonces el FOR no hace nada, sale un error.

Es porque el ciclo FOR… NEXT se controla con números.

2. Ahora bien, si por alguna razón poderosa, los valores de D14 y F14 son numéricos el primero menor y el segundo mayor, entonces la asignación:

Range("C5"). FormulaR1C1 = i, Inserta “Juan” en la celda C5 cada vez, desde “i” hasta “fin”.

3. La declaración: ActiveWindow. SelectedSheets. PrintOut Copies:=1, sólo va a imprimir tantas hojas en la impresora como “inicio” y “fin” tengan valores, o sea, va a imprimir, tantos juan por hojas del FOR…NEXT.

En consecuencia, la macro no va ha imprimir un rango de 60 filas con sus respectivas columnas.

Tu necesitas imprimir un rango de 60 lineas usa este código:

Sub Imprimir2()
    ActiveSheet.PageSetup.PrintArea = ""B1:G60"
    Selection.PrintOut Copies:=1
End Sub

Puedes usar envés de Selection.PrintOut Copies:=1 usa ActiveSheet.PrintPreview para ver primeramente la vista previa del rango a imprimir.

Ten en cuenta que ""B1:G60" te va a seleccionar un área de impresión de 60 filas con 6 columnas, o sea, 160 celdas...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas