Reloj

Hola. Necesito representar en una celda un reloj (en tiempo real)que marque las horas, los minutos y los segundos ¿es posible? Gracias...
Respuesta
1
Si es posible pero te consumiría todo el procesador.
Es decir, tendrías un reloj a tu gusto pero no podrías hacer nada más mientras esté abierto el archivo (por lo menos en excel).
La otra manera sería un recalculo de la hora cada vez que modifiques una celda o un grupo de ellas o incluso una hoja del libro pues si lo hacemos del libro pasaría lo que te mencioné arriba.
No me importa los recurso que consuma.
Saludos.
Hice la prueba y tal como te lo mencioné no se puede hacer nada más en excel mientras el libro que contiene el reloj esté abierto.
En todo caso como me mencionaste que no importaba te explico, debes copiar el código que te transcribiré a continuación como código del libro y debes ubicarlo en el evento open del libro, de manera que desde el momento en que lo abras se active (debes detener la ejecución con CTRL+Pause) hasta que cierres el libro.
Private Sub Workbook_Open()
Do While Time() <> Range("$A$1").Value
Range("$A$1").Value = Time()
nuevaHora = Hour(Now())
nuevoMinuto = Minute(Now())
nuevoSegundo = Second(Now()) + 1
tiempoEspera = TimeSerial(nuevaHora, nuevoMinuto, nuevoSegundo)
Application.Wait tiempoEspera
Loop
End Sub
Disculpa la demora en la respuesta pero esta semana santa no trabajé, te agradezco finalizar la pregunta de acuerdo a la calidad de la respuesta.

1 respuesta más de otro experto

Respuesta
1
Efectivamente, es posible.
Afortunadamente, ya está resuelto.
Acredito como corresponde a Sebastian Thomschke como el autor del código siguiente.
Activa el editor de Visual Basic (presiona Alt+F11), inserta un nuevo módulo ("Insertar", "Módulo") y pega el siguiente código:
' *********************************************************************
' Excel VBA Timer Example v1.00
' Copyright ©2002 by Sebastian Thomschke, All Rights Reserved.
' http://www.sebthom.de
'*********************************************************************
' If you like this code, please vote for it at Planet-Source-Code.com:
' http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=34409&lngWId=1
' Thank you
'*********************************************************************
' WARNING: ANY USE BY YOU IS AT YOUR OWN RISK. I provide this code
' "as is" without warranty of any kind, either express or implied,
' including but not limited to the implied warranties of
' merchantability and/or fitness for a particular purpose.
'*********************************************************************
' You are free to use this code within your own applications, but you
' are expressly forbidden from selling or otherwise distributing this
' source code without prior written consent.
' *********************************************************************
Option Explicit
Dim ClockCell As String
Dim timer_enabled As Boolean
Dim timer_interval As Double
Sub cmd_TimerOn()
ClockCell = "B8" ' celda donde mostrará el reloj
Dim interval As Double
interval = 1.15740740740741E-05
'start the timer with the specified interval
Call timer_Start(interval)
End Sub
' *********************************************************************
' your code goes into this Makro
' *********************************************************************
Sub Timer()
' output the current time to cell ClockCell
Range(ClockCell).Value = Format(CStr(Time), "hh:mm:ss")
End Sub
' *********************************************************************
' internal timer methods
' *********************************************************************
Sub timer_OnTimer()
Call Timer
If timer_enabled Then Call timer_Start
End Sub
Sub timer_Start(Optional ByVal interval As Double)
If interval > 0 Then timer_interval = interval
timer_enabled = True
If timer_interval > 0 Then Application.OnTime (Now + timer_interval), "Timer_OnTimer"
End Sub
Sub timer_Stop()
timer_enabled = False
End Sub
----
Verás que le agregué una variable para que le indiques en qué celda quieres que se muestre el reloj (mi pequeño aporte a tan buen procedimiento)
Puedes agregarle un par de botones para iniciar y detener el reloj. Al primero asígnale la macro cmd_TimerOn(), mientras que al segundo asócialo a timer_Stop()
---
Como curiosidad, tal vez te interese bajarte un archivo con una versión analógica (con agujas!) Disponible en el sitio de un gurú en MS Excel: Chip Pearson
Accedes a ella en:
http://www.cpearson.com/Zips/Clock.ZIP
Estimo que esto cubrirá tus expectativas.
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas