Validar si un formulario ya se encuentra abierto en excel

He buscado por todos lados y no he conseguido realizar lo siguiente..

Necesito que al abrir un formulario mediante:

Userform.show

Application.visible=false

Me diga si ese userform ya se encuentra abierto.

Es decir..algo como esto:

Privare sub workbook_open ()

If userform1 is show then

    Msgbox "userform1 está abierto"

Else 

   Userform1.show

End If

En sub

O algo así pero no sé cómo hacerlo.

2 Respuestas

Respuesta
1

Puedes hacer que al abrir el libro te te cargue el formulario y te muestre un mensaje

Private Sub Workbook_Open()
MsgBox "UserForm1 está abierto"
UserForm1.Show
End Sub

Lo que pasa es que estoy abriendo un formulario con un script, entonces necesito que al abrir el programa lo primero que haga es que valide si el formulario ya está abierto y en caso de que no lo abra y en caso de que si no lo abra...esto lo necesito para no abrir dos veces el mismo formulario

Ok...lo pruebo y te informo...

Otra consulta...

Al abrir el formulario me lo abre sin problema pero lo abre atrás de otras ventanas que tengo abiertas...quisiera saber cómo hacer para que el formulario lo abra hasta adelante de todas..

Prueba cambiando el orden de llamada

Respuesta

. L .l Buenas gente, excelente respuesta del experto Carlos Arrocha.

De mi parte, que tambien estuve en una situacion similar hace pocas horas, vengo aportar mi pequeño granito de arena.

Con esta macro abrimos un formulario:

Sub probarmacro
'Esta macro abre formulario visorfotos1--------
On Error Goto FALLA
Load visorfotos1
visorfotos1.Show
Call RUTAFOTO(visorfotos1.Name)
exit sub
'fin de la macro-------------------------------
FALLA:
Msgbox "Houston tenemos un problema!!"
Exit Sub
End Sub

y con esta pequeño procedimiento, comprobamos este visible:

Sub RUTAFOTO(FORMUNAME As String)
'OJO Este Proceso busca el formulario abierto--------------------
On Error Goto FALLOALGO
Dim VENTANA As Object
For Each VENTANA In VBA.UserForms
 If VENTANA.Name = FORMUNAME Then
 If VENTANA.Visible Then GoTo CONTINUAR: Exit For
 End If
Next
Exit Sub
'aqui terminamos de buscar el formulario-------------------------
CONTINUAR:
If Ucase(VENTANA.Name) =  "VISORFOTOS1" Then _
 MsgBox VENTANA.Name & " ya esta visible y funcionando!"
If Ucase(VENTANA.Name) = "VISORVIDEO1" Then _
 MsgBox VENTANA.Name & " ya esta visible y reproduciendo!"
Exit Sub
FALLOALGO:
Msgbox "Se nos cayó el sistema! ModoPesadilla: Activado xD!

Espero esto sea de ayuda, saludos gente!!! .l .l

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas