La forma más simple de obtener la hora en Excel es mediante la función =AHORA(). Esta función, que no lleva argumentos, da la fecha y la hora actuales. Según el formato adecuado, la celda puede mostrar la fecha, la hora o ambos.
El valor de la función se actualiza cada vez que se recalcula la hoja. Sea porque modificamos algún dato o porque oprimimos la tecla <F9>.
Si queremos asegurar la actualización automática, podemos usar una macro:
Sub Reloj()
Sheets(1).Cells(1, “A”) = Now
Application.OnTime Now + TimeSerial(0, 0, 2), “Reloj”
End Sub
Esta macro coloca el valor de la función Now (equivalente a AHORA) en la celda [A1] de la primera hoja del libro y, luego de una pausa de dos segundos, se ejecuta a sí misma.
La instrucción OnTime programa la ejecución de la macro que figura como segundo argumento (Reloj) para el momento indicado como primer argumento (el momento actual más dos segundos). Esta pausa de dos segundos permite seguir trabajando con la hoja de la forma normal.
El problema de esta macro es que pretende seguir reejecutándose de manera continua. Incluso, después de cerrar el archivo, lo cual puede generar complicaciones. Deberíamos prever alguna forma de finalizar la reejecución al cerrar el archivo. Podemos hacerlo con esta segunda macro:
Sub Auto_Close()
Application.OnTime Sheets(1).Cells(1, “A”) + _
TimeSerial(0, 0, 2), “Reloj”, , False
End Sub
Por tener el nombre especial Auto_ Close, esta macro se ejecuta automáticamente al cerrar el archivo que la contiene. La macro contiene la misma instrucción de la macro Reloj, pero con el argumento False al final. Esta instrucción cancela la continua reejecución de la macro Reloj.