Contador en Excel

Contador en Excel

Mi archivo tiene 50 hojas en su interior, cada una de las cuales es un formulario estándar. Nombramos Form1, Form2, Form3.

Quiero crear una hoja de impresión, donde selecciono qué formulario quiero ver, para no tener que navegar entre hojas para encontrar el que quiero. Y quiero tener un contador en esta hoja de impresión que cuente cada vez que envío a una impresora.

¿Qué hice hasta ahora? Creé esta fórmula, donde M1 es una lista desplegable con los nombres de los formularios. Entonces, si quiero ver Form2, selecciono Form2 en la lista desplegable y la fórmula muestra toda la hoja de Form2.

=IF($M$1="Form1";IF('Form1'!A1="";"";'Form1'!A1);"")&IF($M$1="Form2";IF('Form2'!A1="";"";'Form2'!A1);"")&IF($M$1="Form3";IF('Form3'!A1="";"";'Form3'!A1);"")

Está funcionando bien, porque todos los formularios están estandarizados.

Después de elegir el formulario seleccionado, necesito insertar un número de identificación de mi empresa y luego imprimirlo.

Me gustaría saber si es posible crear un contador en esta hoja que cuente cuántas veces imprimí... O cualquier cosa que cuente en orden cronológico cuando guardo o cambio algo...

Respuesta1

Todas sus solicitudes pueden ser atendidas. Pero me temo que solo uso VBA.

Mantenga el menú desplegable pero también agregue un botón que active una macro.

En la macro, lea la celda con el menú desplegable y envíe la hoja correspondiente para imprimir. Luego actualice el contador apropiado, que puede estar en un conjunto de celdas en la misma página que el menú desplegable y el botón.

Para contar el número de guardados, necesita una macro que tenga la función before_save. Necesitas buscar eso, creo que incluso puede haber un artículo al respecto en mi blog, no lo recuerdo, han pasado algunos años desde que lo hice. El principio es el mismo que el de la macro anterior en el sentido de que simplemente agrega 1 a la celda correspondiente.

Respuesta2

Una forma algo más limpia de crear la “hoja de impresión” que mostrará el contenido de una de las otras 50 hojas es establecer la celda A1en

=INDIRECT($M$1 & "!A1")

que crea una cadena de texto que se parece al nombre calificado de la celda que desea ver y luego usa la INDIRECT()función para eliminar la referencia a esa cadena (es decir, tratarla como una dirección de celda y recuperar el contenido de la celda identificada) . Con esto, no necesitarás cambiar tu(s) fórmula(s) cuando agregues Form51. Advertencias:

  • Esto puede hacer que Excel trabaje mucho (es decir, dedique mucho tiempo) a “recalcular” estas celdas indirectas siempre quecualquier cosacambios (no sólo M1). No estoy seguro de si sería peor que lo que tienes ahora.
  • Asegúrese de evitar la tentación de cambiar datos o ingresar datos nuevos en la “hoja de impresión” cuando desee actualizar Form42. (Por supuesto, ahora tiene este problema). Es posible que pueda protegerse de este tipo de accidentes protegiendo la hoja de impresión.

Hay otras formas de construir la hoja de impresión; por ejemplo, usando VBA para

  • crear una función definida por el usuario que podría reemplazar la INDIRECT()llamada, pero operar más suavemente, o
  • en realidad copie todos los datos a la hoja de impresión cada vez que cambie .FormnnM1

Puede contar los cambios escribiendo una Worksheet_Changerutina VBA.

No conozco ninguna forma de que la lógica de la hoja pueda contar/detectar cuando la imprimes. Sin embargo, es posible que pueda lograr el efecto deseado escribiendo una rutina de impresión en VBA. A

PrintOut , , , True

El estado de cuenta imprimirá la hoja por usted; agregue cualquier otra acción que desee (por ejemplo, incrementar un contador). (Solo tienes que acordarte de imprimirusando esta macro.) El cuarto parámetro PrintOutesAvance, configúrelo True en para que Microsoft Excel invoque la vista previa de impresión antes de imprimir la hoja (dándole así la opción de cancelar) o False(u omitido) para imprimir la hoja inmediatamente, incondicionalmente.

Ver¿Cómo agrego VBA en MS Office? para obtener información sobre, bueno, ya sabes.

información relacionada