Problema Reloj en excel

Hola.
Abusando quisiera que me pudiaran aconsejar
Tengo el siguiente reloj
Sub Reloj()
Hoja1.Range("A2") = Format(Now, "hh:mm:ss")
Application.OnTime (Now + TimeValue("0:00:01")), "Reloj"
End Sub
El problema es que me actualiza la función "=ahora()" que tengo en otras celdas, automáticamente en cualquier parte del libro, cuando la instrucción dice solamente "A2"
El otro problema es que la función "=ahora()" la tengo en muchas celdas y como se actualizan por la macro el programa se pone algo torpe y flashea cada segundo. Conocen otro macro reloj que no cargue tanto el excel
Y con que fórmula podría detenerlo
Gracias!
Respuesta
1
Hasta donde sé, eso no se puede hacer, ya que eso es algo que EXCEL trae por defecto; cada vez que se registra un cambio en cualquier celda, se actualizan todas las fórmulas de la hoja. Lo que te sugiero es hacer una Ahora, personalizado (Ahora2()), las funciones personalizadas excel no las actualiza automaticamente; por ello las actualimos al abrir el libro, con la instrucción: Application. CalculateFull
'Tus Macros:
Sub Reloj()
Cells(1, 1) = Format(Now, "hh:mm:ss")
Application.OnTime (Now + TimeValue("0:00:01")), "Reloj"
End Sub
Sub Auto_Open()
Reloj
Application.CalculateFull
End Sub
Sub Auto_Close()
'Detiene la macro:
On Error Resume Next
Application.OnTime Now + TimeSerial(0, 0, 1), "Reloj", Schedule:=False
End Sub
Public Function Ahora2() As String
'Esta función se usa igual que la que trae excel.
Ahora2 = Format(Now, "hh:mm:ss")
End Function
Muchas gracias por la respuesta si me sirvió junto con otra que me pasaron, la dejo por si tienen dudas, esta macro debería ir en las Celdas que quieras con la función =Ahora() sin actualizar por cada macro
Un gran Saludo!
Sub Inicio()
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=NOW()-TODAY()"
    Range("B2").Select
    Selection.NumberFormat = "h:mm AM/PM"
    Selection.Copy
    Range("B2").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas