Actualizar macros cada minuto que pasa.

Para Dande Amor

Ante todo un cordial saludo, tengo una macro que me diste y que trabaja perfectamente pero esta ves quisiera que el tiempo que se ejecuta lo haga en minutos y no en segundos; es decir que si pasa un minuto se actualice la macro o que se ejecute.

La macro que me diste es la siguiente.

Dim l1, h1
Sub Comenzar()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("viajero")
    If h1.[A4] = "" Then
        MsgBox "No se puede ejecutar otra vez", vbCritical, "El reloj está en ejecución"
        Exit Sub
    End If
    h1.[A4] = ""
    h1.[A14] = "START"
    Detener_Conteo
    ActualizarHora
End Sub
Sub ActualizarHora()
'Por.Dante Amor
    If h1.[A4] = "Fin" Then Exit Sub
    h1.[B7] = h1.[B7] + TimeValue("00:00:01")
    h1.[B4] = h1.[B4] + TimeValue("00:00:01")
    h1.[B6] = h1.[B7] - TimeValue("00:00:01")
    h1.[B5] = Time
    Application.OnTime Now + TimeValue("00:00:01"), "ActualizarHora"
End Sub
Sub Detener()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("viajero")
    h1.[A4] = "Fin"
    Call Inicio_Conteo
End Sub
Sub Iniciar()
'Por.Dante Amor
    Call Detener
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("viajero")
    h1.[B4] = "00:00:00"
    h1.[B9] = "00:00:00"
    h1.[A14] = "INICIO"
    h1.[B7] = Time
    h1.[B1] = TimeValue(Now)
    h1.[B6] = h1.[B7] - TimeValue("00:00:01")
    Call Detener_Conteo
End Sub
Sub Inicio_Conteo()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("viajero")
    If h1.[A7] = "" Then
        MsgBox "La secuencia de parada" & vbNewLine & " Está en ejecución", vbInformation, ""
        Exit Sub
    End If
    h1.[A7] = ""
    Parada
End Sub
Sub Detener_Conteo()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("viajero")
    h1.[A7] = "Fin"
End Sub
Sub Parada()
'Por.Dante Amor
    If h1.[A7] = "Fin" Then Exit Sub
    h1.[B9] = h1.[B9] + TimeValue("00:00:01")
    h1.[B5] = Time
    h1.[A14] = "PAUSA II"
    Application.OnTime Now + TimeValue("00:00:01"), "Parada"
End Sub
2

2 Respuestas

3.691.575 pts. Si me amas, siempre voy a estar en tu corazón; si me...

En esta instrucción se indica el lapso de tiempo en Horas : minutos : segundos

Entonces esto tiene un intervalo de un segundo

TimeValue("00:00:01")

Para 3 minutos:

TimeValue("00:03:00")

Par 2 horas:

TimeValue("02:00:00")

Cambia el parámetro según el tiempo que necesites.

Sal u dos

Gracias por la repuesta amigo Dante, e modificado lo me indicaste pero no me a funcionado como quería espero que me puedas ayudar. Lo que busco es al presionar el botón COMENZAR la celda D5 tiene que quedarse en 0:00:00 minutos, por que aun no a pasado el minuto.

Lo mismo sucede con el botón DETENER.

La macro quedo así al hacer el cambio.

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
    Call Detener_Conteo
End Sub
Sub ActualizarHora()
'Por.Dante Amor
    If h1.[C3] = "Fin" Then Exit Sub
    h1.[A5] = h1.[A5] + TimeValue("00:01:00")
    h1.[D5] = h1.[D5] + TimeValue("00:01:00")
    'h1.[A8] = Time
    h1.[A8] = h1.[A8] + TimeValue("00:01:00")
    h1.[A10] = h1.[A5] - TimeValue("00:01:00")
    Application.OnTime Now + TimeValue("00:01:00"), "ActualizarHora"
End Sub
Sub Detener()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    h1.[C3] = "Fin"
    Call Inicio_Conteo
End Sub
Sub Iniciar()
'Por.Dante Amor
    Call Detener
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    h1.[D5] = "00:00:00"
    h1.[A11] = "00:00:00"
    h1.[A5] = Time
    Call Detener_Conteo
End Sub
Sub Inicio_Conteo()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    h1.[C4] = ""
    Parada
End Sub
Sub Detener_Conteo()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    h1.[C4] = "Fin"
End Sub
Sub Parada()
'Por.Dante Amor
    If h1.[C4] = "Fin" Then Exit Sub
    h1.[A11] = h1.[A11] + TimeValue("00:01:00")
    Application.OnTime Now + TimeValue("00:01:00"), "Parada"
End Sub

Gracias por la gran ayuda que me has brindado y espero no ocasionar tanto problema con esta pregunta.

No entiendo por qué todas las macros. Te anexo otra solución:

Sub LanzarCrono()
'Por.Dante Amor
    Range("A5") = Time
    Range("C3") = ""
    ActualizarHora
End Sub
'
Sub ActualizarHora()
'Por.Dante Amor
    If Range("C3") = "Fin" Then Exit Sub
    Range("B3") = Time
    Range("D5") = "=B3-A5"
    Application.OnTime Now + TimeValue("00:01:00"), "ActualizarHora"
End Sub
'
Sub PararReloj()
'Por.Dante Amor
    Range("C3") = "Fin"
    On Error Resume Next
    Application.OnTime Now + TimeValue("00:01:00"), "ActualizarHora", , False
End Sub
'
Sub Iniciar()
'Por.Dante Amor
    Range("D5") = "00:00:00"
End Sub

Pon los datos así:

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

¡Gracias! Dante Amor

Excelente funciona perfectamente gracias por la solución.

Esta macro la e acoplado a uno de mis proyectos de las cuales no la e podido resolver te estaré asiendo una nueva pregunta de la cual me gustaría que me des una manito.

14.925 pts. Si estas tratando siempre de ser normal, nunca sabrás...

Intenta cambiando esto:

TimeValue("00:00:01")

por esto: en todas las líneas donde se encuentre dicho código.

TimeValue("00:01:00")

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas