Temporizador para cerrar un userform vba Excel

Estoy trabajando en un proyecto de VBA EXCEL y quisiera saber si hay la forma de colocar un temporizador en el formulario que esté en ejecución para que después de no realizar alguna función o estar inactivo se cierre de manera automática.

1 respuesta

Respuesta

Puedes utilizar el evento ON_TIME

Ok, me he dado cuenta que ontime funciona sobre una hora en tiempo real y lo que quisiera es que después de un determinado numero de segundos de estar el formulario en desuso se cierre.

saludos y gracias

Sólo tienes que incluir la instrucción OnTime cada vez que abras el formulario y en vez de poner una hora determinada pones (Now + Timevalue("00:00:05")) como .ves es "hh:mm;ss" ahí pones el tiempo que tu quieras


                    

Hola Esteban, esto es lo que estoy haciendo siguiendo tus indicaciones. esto se ejecuta en un libro de excel pero el libro se cierra en el tiempo indicado este o no realizando alguna actividad :

----en un modulo:

Dim CloseTime As Date

Sub TimeSetting()

  CloseTime = Now + TimeValue("00:00:15")

    On Error Resume Next

    Application.OnTime EarliestTime:=CloseTime, _

      Procedure:="SavedAndClose", Schedule:=True

End Sub

Sub TimeStop()

    On Error Resume Next

    Application.OnTime EarliestTime:=CloseTime, _

      Procedure:="SavedAndClose", Schedule:=False

 End Sub

Sub SavedAndClose()

    ActiveWorkbook.Close Savechanges:=True

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Call TimeStop

End Sub

 -----en this workbook

Private Sub Workbook_Open()

    Call TimeSetting

End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

   Call TimeStop

   Call TimeSetting

End Sub

Haces un despliegue de instrucciones excesivo, lo único que tienes que hacer es:

En un modulo escribes una sub para cerrar el formulario:

Sub Cierroformulario ()

MyFormulario.Hide

End Sub

Para que empiece a contar el tiempo cuando abras el formulario, donde tengas la instrucción que abre el formulario (MyFormulario. Show) añades:

Application. Ontime now+timevalue("00:00:05"), "Cierroformulario"

Lo que te falta es desactivar el Ontime cuando escriba algo en el formulario. Para ello supongo que tendras una ventana de texto (p. E Text1), estableces en Text1_change

application.ontime now+timevalue("00:00:05"), "Cierroformulario", Schedule=False

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas