Reloj en excel que tiene conflicto al abrir otro archivo

Para: Dante Amor

Ante todo un saludo y por la gran experiencia que tienes en estos temas, tengo un problema con una macro que anteriormente me diste y que funciona excelente, pero tiene un inconveniente que al ejecutarlo me genera conflicto con los otros archivos que están abiertos y que son completamente distintos a este, te dejo unas imágenes de como pasa este problema:

En la imagen 1 fue un tema que hice en el foro y que fue solucionado, la macro que me diste fue la siguiente:

Sub Comenzar()
'Por.Dante Amor
    If [C3] = "" Then
        MsgBox "No se puede ejecutar otra vez", vbCritical, "El reloj está en ejecución"
        Exit Sub
    End If
    [C3] = ""
    ActualizarHora
    Call iniciarReloj
End Sub
Sub ActualizarHora()
'Por.Dante Amor
    If [C3] = "Fin" Then Exit Sub
    [A5] = [A5] + TimeValue("00:00:01")
    [D5] = [D5] + TimeValue("00:00:01")
    Application.OnTime Now + TimeValue("00:00:01"), "ActualizarHora"
End Sub
Sub Detener()
'Por.Dante Amor
    [C3] = "Fin"
    Call detenerReloj
End Sub
Sub Iniciar()
'Por.Dante Amor
    [D5] = "00:00:00"
    [A5] = Time
End Sub
Dim Tiempo As Variant
Dim Ejecutando As Boolean
Sub programarMacro()
    Range("A8") = Tiempo
    Tiempo = Now + TimeValue("00:00:01")
    Application.OnTime Tiempo, "miMacro", , True
End Sub
Sub miMacro()
    Range("D5").Value = Range("D5").Value + 1
    Call programarMacro
End Sub
Sub detenerReloj()
    Ejecutando = False
    Application.OnTime Tiempo, "miMacro", , False
End Sub
Sub iniciarReloj()
    Ejecutando = True
    Call programarMacro
End Sub
Sub PONER_A_CERO()
    Range("D5") = "00:00:00"
End Sub

 Te agradezco muchísimo por la respuesta que me puedas dar ya que esta macro me ayuda bastante.

3 respuestas

Respuesta
2

Te anexo la macro actualizada. Cambia las macros que pusiste, por esta.

Dim l1, h1
Sub Comenzar()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    If h1.[C3] = "" Then
        MsgBox "No se puede ejecutar otra vez", vbCritical, "El reloj está en ejecución"
        Exit Sub
    End If
    h1.[C3] = ""
    ActualizarHora
End Sub
Sub ActualizarHora()
'Por.Dante Amor
    If h1.[C3] = "Fin" Then Exit Sub
    h1.[A5] = h1.[A5] + TimeValue("00:00:01")
    h1.[D5] = h1.[D5] + TimeValue("00:00:01")
    Application.OnTime Now + TimeValue("00:00:01"), "ActualizarHora"
End Sub
Sub Detener()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    h1.[C3] = "Fin"
End Sub
Sub Iniciar()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    h1.[D5] = "00:00:00"
    h1.[A5] = Time
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

¡Gracias! Dante 

Esta  Excelente relativamente esta es una macro perfecta Muchísimas gracias por la respuesta que me diste. 

Respuesta
1

Lo que le ocurre a su macro es que está diseñada para ejecutarse en cualquier página, no sólo en la página para la que fue diseñada. Al hacerlo, los datos le salen descuadrados y se generan esos errores.

La solución pasa por cambiar en la macro las referencias a celdas y apuntarlas explícitamente a la hoja del contador.

Por ejemplo, en su código ve la referencia a la celda A5

[A5] = Time

pasaría a ser....

Worksheets("Hoja1").Range("A5").Value = Time

Y así con todas las referencias a celdas de su macro.

¡Gracias! Manuel

La respuesta que me diste lo he realizado como indicas y funciona pero en este modo se hizo más larga la macro, gracias por el gran interés que tomaste en solucionar mi problema

Respuesta
1

Consulta similar:

Hola. Mi problema es similar pero algo más simple. Mi macro sólo hace actualizar la hora cada segundl en la celda W1 de una hoja de mi archivo excel. Pero cuando paso a otro archivo igual me sale el mensaje de error y entra en conflicto y se para la actualización del reloj. ¿Me pueden ayudar?

Muchas gracias. Soy nueva por aquí espero encontrar respuesta. Muy amables.

Ya lo hice. :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas