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

Respuesta
2

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.

Respuesta
1

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