Desde una macro abro un formulario "uno", ¿Y pasado un tiempo en segundos, quiero cerrarlo, es posible?

Desde una macro abro un formulario"uno"

load uno

uno.show

Después quiero cerrar el formulario "uno" pasados 2 o 3 segundos, sin tener que tocar nada en el formulario abierto, ni cerrarlo manualmente.

1 Respuesta

Respuesta
2

Agrega las líneas

Application. Wait (Now + TimeValue("00:00:03"))
Unload uno

Mejor aun úsalo así:

En un modulo pones esto:

Public Form As Object
Public Hr
Sub Term()
Hr = Time + TimeSerial(0, 0, 3)
Application.OnTime Hr, "Ed"
End Sub
Sub Ed(): On Error Resume Next
Unload Form
Application.OnTime Hr, "Ed", Schedule:=False
End Sub

En el formulario que quieres cerrar pones esto:

Private Sub UserForm_Initialize()
Set Form = Me
Term
End Sub

No me funciona, quizás no me explique claramente bien; te explico pasado a paso lo que hago:

Tengo un formulario "ARTICULONUEVO A CREAR", en el cual relleno varios campos y al pulsar el botón "ACEPTAR" comprueba en la hoja artículos que no exista el aticulo, seguidamente asigno a la celda "M2" el campo TIPOARTICULO, y le pido que ejecute la macro saber_cuadro_imagen_vacio 'MODULO 21, te muestro esta macro:

Sub saber_cuadro_imagen_vacio()
'
' saber_cuadro_imagen_vacio Macro
'

'
Set controles = BUSCARARTICULO.Controls
For Each IMAGEN In BUSCARARTICULO.Controls
Nombre = UCase(TypeName(IMAGEN)) = "IMAGE"
If Nombre Then
x = IMAGEN.Name
On Error Resume Next
PNOMBRE = IMAGEN.Picture
If PNOMBRE = Empty Then
'MsgBox (x & " VACIO "), vbInformation, "AVISO"
Range("P2") = x
IMAGENVACIA = Range("P2").value
Ruta = ARTICULO_NUEVO_A_CREAR.TextBox5.value
ThisWorkbook.VBProject.VBComponents("BUSCARARTICULO").Designer.Controls(IMAGENVACIA).Picture = LoadPicture(Ruta)
CERRAR = "SI"
'Aquí es donde quiero que abra el formulario BUSCARARTICULO y pasados 3 segundos que se cierre automáticamente, solo si la variable (CERRAR) ES IGUAL A "SI"
Load BUSCARARTICULO
BUSCARARTICULO.Show

Set controles = Nothing

Exit For
End If
On Error GoTo 0
End If
Next IMAGEN
CERRAR = "NO"
Set controles = Nothing
End Sub

Creo que me he explicado lo mejor que he podido, pero no veo como hacerlo, he probado lo que me indicaste, y no me funciona, o lo pondo donde no debe ser; por mi ignorancia; por eso te ruego que me ayudes.

Esperando tus prontas noticias, te saluda atentamente:

Alfredo

De igual forma yo me explique perfectamente

1.- Creas un modulo y pones el código que puse primero.

2.- En tu formulario BUSCARARTICULO pones la segunda parte del código.
Si no te funciona algo anda mal con tu código, yo lo probé y funciona perfectamente.

¡Gracias! Ya he descubierto el defecto, es mio porque en el inizialitze del formulario tenia una condición IF de una variable que esta en una macro y no la había declarado publica, ya esta resuelto, muchas gracias.

Atentamente:

Alfredo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas