Contadores que se actualicen al imprimir hoja excel

Necesito poner 2 contadores en 2 celdas de la misma hoja de manera que al imprimir la primera página imprima etiqueta 1 y etiqueta 2, al imprimir la segunda página imprima etiqueta 3 y etiqueta 4 y así sucesivamente; es decir, tengo una plantilla en la que cambio un par de datos y luego imprimo 50 hojas (que son 100 etiquetas) de golpe, no de hoja en hoja y necesito que salgan autonumeradas.
Gracias por vuestra ayuda.

1 Respuesta

Respuesta
1
Por desgracia no existe ninguna manera sencilla de hacer lo que quieres, en el menu ver - encabezado y pie de página, tienes un botón por el cual introduce el numero de página en todas las páginas impresas, pero como tu quieres que aparezca en una celda, y ademas dos números. La única manera de hacerlo es imprimir por código, es decir, tendrías que hacerte un botón imprimir, que de los valores adecuados a las dos celdas e imprima la página, y así sucesivamente, por ejemplo con una instrucción FOR.
Saludos.
También puedes mirar esto:
http://espanol.answers.yahoo.com/question/index?qid=20071207091304AAy96mB
Aunque me parece bastante lioso.
He mirado el link que me pasaste y no me es útil para este caso concreto
Serias tan amable de pasarme el codigo con las instrucciones for...next ?
Yo he intentado esto pero no me sale:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim intNúmCopias As Integer
Dim intNúmEtiq As Integer
Dim N As Integer
intNúmEtiq = Application.InputBox(prompt:="Número de la Etiqueta:", Type:=1)
intNúmCopias = Application.InputBox(prompt:="Número de copias a imprimir:", Type:=1)
' En esta celda pongo el valor de la primera etiqueta
Range("E29").Value = intNúmEtiq
' En esta celda pongo el valor de la segunda etiqueta
Range("L29").Value = intNúmEtiq + 1
For N = 1 To intNúmCopias
ActiveSheet.PrintOut copies:=1
Range("E29").Value = Range("E29").Value + 1
Range("L29").Value = Range("L29").Value + 1
Next N
End Sub
Este código ademas de que no hace lo que busco es bastante incomodo porque te sale continuamente el inputbox preguntando y es una paliza tener que cancelar 50 veces
Gracias por tu ayuda
No estoy muy ducho en el tema de imprimir, pero si entiendo bien el código ese, te haría falta algo así:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
dim etiquetas as integer
Dim intNumCopias As Integer
etiquetas = 1
for intnumCopias = 1 to 50
Range("E29").Value = etiquetas
etiquetas = etiquetas + 1
Range("L29").Value = etiquetas
etiquetas = etiquetas + 1
ActiveSheet.PrintOut copies:=1
Next
End Sub
Haber si funciona bien a la primera
Por cierto, al darle a imprimir, solo deberías darle 1 copia, pues el código ya te imprime 50 copias.
No te olvides cerrar la pregunta y puntuar.
Hola experto !
Con el código que me has facilitado lo único que consigo es imprimir 51 hojas con las etiquetas 3 y 4. Evidentemente algo nos falla, je je.
¿Le podríamos pasar el valor de la primera etiqueta capturandolo de una celda que no esta en esa misma hoja? Lo digo porque muchas veces tengo que imprimir intervalos que no empiezan en 1, por ej. de la 210 a la 270 y lo cómodo para mi es tener una hoja a la que llamo DATOS donde pongo todas las variables.
Yo he intentado esto:
Range("DATOS!B4").Value = numero
pero no se si está bien referenciado el pase de valores...
si lo intento con Application.InputBox(prompt:="Número de la Etiqueta:", Type:=1) aunque lo pongo fuera del bucle, me pregunta cada vez que imprime 1 hoja, con lo cual casi que lo descarto.
A ver si me puedes ayudar con un bucle for...next (pero que funcione)
Gracias
Ya veo el fallo, dame un par de días y te respondo
Private Sub Workbook_BeforePrint(Cancel As Boolean)
application.disableevents
dim etiquetas as integer
Dim intNumCopias As Integer
etiquetas = 1
for intnumCopias = 1 to 50
Range("E29").Value = etiquetas
etiquetas = etiquetas + 1
Range("L29").Value = etiquetas
etiquetas = etiquetas + 1
ActiveSheet.PrintOut copies:=1
Next
application.enableevents
End Sub
Bueno, el fallo era que cada vez que se le daba la instrucción de imprimir, volvía ejecutar toda la instrucción _beforeprint, por eso añado el disableevents y luego activarlo. Si te imprime 51 hojas cambia el for a 1 to 49.
Para indicar el valor inicial de la primera etiqueta quita la instrucción:
etiquetas = 1 y lo puedes sustituir por hoja1. Range("A1"). value
donde hoja1 es la hoja donde tienes el dato, y A1 la celda en cuestion.
El código esta sin probar, pero es solo una guía de como lo tienes que hacer, no te voy a hacer todo el trabajo :)
Después de retocar un poquito el código empiezo a conseguir más o menos lo que quería.
Gracias por tu tiempo. Tu ayuda me ha venido perfecta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas