Os traigo una función que nos va a permitir comprobar si el formulario que le pasamos como parámetro está abierto. Para ello vamos a utilizar la colección Forms que contiene todos los formularios abiertos en la base de datos. Lo que hacemos es enumerar todos los que están abiertos mediante un bucle For-Next y vamos comprobando uno por uno si el que le hemos pasado como parámetro coincide con el nombre de alguno de ellos.
Sin más preámbulo veamos la función:
Function FormularioAbierto(strNombreFormulario As String) As Integer
‘Esta función devuelve verdadero si hay un formulario abierto
Dim i As Integer
‘Suponiendo que sea falso
FormularioAbierto = False
For i = 0 To Forms.Count – 1
If Forms(i).Name = strNombreFormulario Then
FormularioAbierto = True
Exit Function
End If
Next
End Function
Para probar nuestra función tenemos un formulario llamado “frmClientes” y otro formulario desde el que vamos a comprobar si tenemos abierto “frmClientes”.
En nuestro formulario de comprobación solo necesitamos un botón que hemos llamado “cmdComprobarFormularioAbierto” y cuyo código será tan sencillo como:
Private Sub cmdComprobarFormularioAbierto_Click()
If FormularioAbierto(«frmClientes») = True Then
Call MsgBox(«El formulario está abierto», vbInformation, «Información»)
Else
Call MsgBox(«El formulario está cerrado», vbCritical, «Información»)
End If
End Sub
Al pulsar el botón llamamos a nuestra función y le pasamos el nombre del formulario: FormularioAbierto(«frmClientes») y en función de lo que nos devuelva mostramos un mensaje u otro.