Autonumerar después de imprimir

Tengo un sistema para gestión del control escolar de una escuela, que contiene al menos 10 hojas. En una hoja por ejemplo de nombre "Calificaciones", es donde se carga la información, de esas nunca necesitare imprimir, pero existe una hoja llamada constancia, la cual tiene un numero que necesito que se incremente en 1 después de imprimir, sin que afecte el contenido de las demás hojas, pero que no se incremente si mando a imprimir en alguna de las otras hojas. Las macros que hasta ahora he visto no me sirven porque me afectan las demás hojas del libro, espero alguien pueda ayudarme.
1

1 respuesta

Respuesta
1
Entrá al Editor, seleccioná del margen izquierdo el objeto: ThisWorkbook (o Este libro).
Allí escribí esta rutina ajustando el nombre de hoja y celda que se incrementará:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Constancia" Then ActiveSheet.Range("G2") = ActiveSheet.Range("G2") + 1
End Sub
Como podrás notar, el evento es BeforePrint, es decir que primero se actualiza y luego se imprime. Tené esto en cuenta a la hora de colocar el primer valor en esa celda.
Olvidé mencionar que la rutina menciona si la hoja activa es Constancia, es decir que la impresión siempre debe ser enviada desde esa hoja para que se ejecute el cambio de numeración
Sdos!
¿Y Qué necesitaría para que esta rutina pueda repetirla en otras hojas dentro del mismo libro? Es decir, si de las 10 hojas que tiene el libro, necesito que un folio, distinto, cambie automáticamente en 4 de las 10 hojas. Lo puedo hacer en otra pregunta y punteartelo...
Adaptá esta entonces:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Constancia" Then
ActiveSheet.Range("G2") = ActiveSheet.Range("G2") + 1
elseif activesheet.name = "Hoja2" then
activesheet.range("E5") = activesheet.range("E5") + 1
elseif activesheet.name = "Hoja3" then
' linea de incremento de celda
elseif activesheet.name = "Hoja4" then
'incrementar celda
end if
End Sub
Ahora, si en las 4 hojas se incrementará la misma línea solo tené´s que modificar la línea del if:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Constancia" or activesheet.name = "Hoja2" or activesheet.name = "Hoja3" Then ActiveSheet.Range("G2") = ActiveSheet.Range("G2") + 1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas