Ejecutar macro con varias celdas

Buenos días necesito de su gran ayuda y no encuentro la solución por ningún lado.
Ejecuto esta macro para medir tiempo de atención en un servicio
el cronometro esta en las celdas z9 hasta la z33 y se inicia con la celda I9 y se detiene con la celda P33
necesito que se ejecute por separado con las respectiva I10, P10... Hasta la I33, P33
*****(esto va en un modulo)*****
Public InicialTime As Date
Public EarlTime As Date
Sub IniciaCronometro()
InicialTime = Now
Cronometro
End Sub
Sub DetieneCronometro()
Application. OnTime EarlTime, "Cronometro", , False
End Sub
Sub Cronometro()
EarlTime = Now + TimeSerial(0, 0, 1)
Application. OnTime EarlTime, "Cronometro"
[z9:z33] = Format(Now - InicialTime, "Short Time")
End Sub
*****(esto va en la hoja)*****
Private Sub Worksheet_Change(ByVal Target As Range)
If Target. Address = "$I$9" Then IniciaCronometro
If Target. Address = "$P$9" Then DetieneCronometro
End Sub
Les agradezco saludos
Juan carlos

1 Respuesta

Respuesta
1
No soy un gran experto en macros y seguramente habrá alguna manera más fácil pero yo te explico como realizarlo
'esto en un modulo
Public InicialTime As Date
Public EarlTime As Date
Sub IniciaCronometro()
InicialTime = Now
Cronometro
End Sub
Sub DetieneCronometro()
Application.OnTime EarlTime, "Cronometro", , False
End Sub
Sub Cronometro()
EarlTime = Now + TimeSerial(0, 0, 1)
Application.OnTime EarlTime, "Cronometro"
[z9] = Format(Now - InicialTime, "Short Time")
End Sub
Sub IniciaCronometro1()
InicialTime = Now
Cronometro1
End Sub
Sub DetieneCronometro1()
Application.OnTime EarlTime, "Cronometro1", , False
End Sub
Sub Cronometro1()
EarlTime = Now + TimeSerial(0, 0, 1)
Application.OnTime EarlTime, "Cronometro1"
[z10] = Format(Now - InicialTime, "Short Time")
End Sub
Sub IniciaCronometro2()
InicialTime = Now
Cronometro2
End Sub
Sub DetieneCronometro2()
Application.OnTime EarlTime, "Cronometro2", , False
End Sub
Sub Cronometro2()
EarlTime = Now + TimeSerial(0, 0, 1)
Application.OnTime EarlTime, "Cronometro2"

[z11] = Format(Now - InicialTime, "Short Time")
End Sub

'lo que esta en negrita deves copiarlo y pegarlo despues cambia el 2 por 3 y el rango z11 por z12 asi hasta z33
en la hoja va esto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$9" Then IniciaCronometro
If Target.Address = "$P$9" Then DetieneCronometro
If Target.Address = "$I$10" Then IniciaCronometro1
If Target.Address = "$P$10" Then DetieneCronometro1
If Target.Address = "$I$11" Then IniciaCronometro2
If Target.Address = "$P$11" Then DetieneCronometro2

End Sub
'aqui igualmente copia y pega y le cambias 2 por 3 y asi hasta el final
Se que no es una solución muy practica pero cuando la termines funciona que es lo importante si necesitas alguna aclaración dímelo y si no te aclaras dímelo y te la termino

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas