Error en la macro de un cronometro , bloquea los botones del Form

Tengo un cronometro restante en un formulario que al pasar los segundos que le pongo se cierra pero me mantiene los botones del formulario inactivos con lo que no puedo usarlo, adjunto el código del cronometro por si alguien ve donde está el error

Gracias

Private Sub UserForm_Activate()
Dim contador, segundos As Integer
segundos = 10
FORMULARIO_CONTADOR.ETIQUETA_CONTADOR.Caption = "Este formulario se cerrará en " & segundos & " segundos."
For contador = segundos To 0 Step -1
Application.Wait (Now() + TimeValue("0:00:01"))
FORMULARIO_CONTADOR.ETIQUETA_CONTADOR.Caption = "Este formulario se cerrará en " & contador & " segundos."
FORMULARIO_CONTADOR.Repaint
Next contador
FORMULARIO_CONTADOR.Hide
End Sub

1 Respuesta

Respuesta
2

Si intentas 'cerrar' el formulario, la instrucción no es Hide (solo lo oculta) sino Unload.

Unload Me 'si es el userform activo

Unload nombre>_del_formulario si lo llamas desde otro ámbito.

Sdos.

Elsa

http://aplicaexcel.com

Hola, no se trata de cerrarlo si no que puedas clicar el botón se cierre y haga lo que esta programado en el botón

Private Sub CommandButton1_Click()
Worksheets("informacion").Visible = True
Sheets("Informacion").Select

End Sub

Pero no te deja clicarlo no se que es lo que ocurre

Gracias por la respuesta

Si, ya he visto tu código. Te falta la instrucción VBA. DoEvents para que te permita seguir ejecutando otros eventos del formulario.

Dim contador, segundos As Integer
Private Sub UserForm_Activate()
relojeando
End Sub
Private Sub CommandButton1_Click()
contador = 0     'para forzar a detener el reloj
Unload FORMULARIO_CONTADOR   'para cerrar el formulario al pasar a la hoja
Worksheets("informacion").Visible = True
Sheets("Informacion").Select
End Sub
Sub relojeando()
segundos = 10
FORMULARIO_CONTADOR.ETIQUETA_CONTADOR.Caption = "Este formulario se cerrará en " & segundos & " segundos."
For contador = segundos To 0 Step -1
    Application.Wait (Now() + TimeValue("0:00:01"))
    FORMULARIO_CONTADOR.ETIQUETA_CONTADOR.Caption = "Este formulario se cerrará en " & contador & " segundos."
    FORMULARIO_CONTADOR.Repaint
    VBA.DoEvents
Next contador
'Atención: aquí solo se lo oculta al finalizar los 10 segundos.
FORMULARIO_CONTADOR.Hide
End Sub

Las variables las dejé al inicio (quitándolas de la macro) porque son llamadas desde 2 procesos.

No me queda claro qué debiera hacer al terminar el reloj... por ahora solo oculta el UF. Y lo cierra al pasar a la hoja... ya decidirás qué hacer en cada caso.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas