jueves, 19 de marzo de 2015

He invertido mucho tiempo en esto

!!!! Hola !!!

Hoy queria enseñar como mostrar un reloj en la barra de estado de Excel.

Dije, queria, pero decidi no hacerlo, pues que diferencia habria entre mirar la hora del dia en la barra de estado de Excel o verla en la barra de tareas de Windows?

No tiene mucho sentido, sin embargo, no deseche la idea por completo:

Tal vez queramos saber el tiempo que llevamos trabajando en Excel con un archivo:

























Ese es el tema de hoy:
Colocar un pequeño cronometro en la barra de estado que se active al momento de abrir el archivo. Esto nos informara el tiempo que llevamos trabajando en el (claro, si no te has dedicado a otras cosas despues de abrirlo).

Manos a la obra.

Paso No 1. - Codigo a escribir en el modulo de clase ThisWorkbook
Option Explicit
Public inicio As Date

Private Sub Workbook_Open()
  inicio = Now()
  cronometro
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Application.OnTime EarliestTime:=Now() + TimeValue("00:01:00"), procedure:="cronometro", Schedule:=False
Application.StatusBar=False

End Sub
Esto hara que al momento de abrir el libro de trabajo, se cree la variable inicio con la hora actual en invocara al cronometro.
Al final, al momento de cerrar el archivo eliminara el cronometro de la barra de estado

Paso No. 2 - Crear el procedimiento Cronometro dentro de un modulo del proyecto
Public Sub cronometro()
  Dim tiempo As Date
  Dim strTiempo As String
  
  tiempo = Now() - ThisWorkbook.inicio
  
  strTiempo = Format(tiempo, "hh:mm")
  Application.StatusBar = strTiempo
  Application.OnTime Earliesttime:=Now() + TimeValue("00:01:00"), procedure:="cronometro"
End Sub
Esto calculara cada minuto la diferencia entre el inicio y la hora actual y mostrara esta diferencia en la barra de estado.

Notas
1. Seria interesante si pudieramos detener el cronometro cuando abrimos otro archivo y reiniciarlo cuando volvemos a el (No es complicado, es cuestion de programar los eventos Activate y deactivate del libro de trabajo).
2. Seria todavia mas interesante si el cronometro pudiera acumular el tiempo de uso del archivo en todas las sesiones (un estimado del tiempo total invertido en el archivo) - Tampoco es complicado, solo basta almacenar el tiempo acumulado al cerrar el archivo y al momento de abrirlo nuevamente iniciar el cronometro con ese valor.
3. Si noto interes en este tema, podria ampliar el codigo con los 2 puntos indicados.


Glosario
Esta entrada ha servido como ejemplo para:
1. Conocer otro de los objetos de Excel: la barra de estado (StatusBar).

2. Conocer dos procedimientos de evento de Excel: Open y BeforeClose (Estos procedimientos se ejecutan automaticamente respectivamente al momento de abrir y cerrar un archivo).

3. Utilizar el metodo OnTime de Excel para ejecutar un procedimiento cada cierto tiempo.

Eso es todo amigos





No hay comentarios.:

Publicar un comentario