Donde quedan los UF que son ocultados?

Mis mas sinceros respetos a los Expertos.
Tengo una duda con respecto a la opcion "Me.Hide"
Tengo varios UF con botones de "ADELANTE", "ATRAS" y "FINALIZAR"
Estos tres botones siempre se repiten en tres UF.
En estos tres botones al finalizar las intrucciones tengo este codigo

Me. Hide
    Load UserFormX
    UserFormX.Show

no puedo usar este codigo

Load Me
    Load UserFormX
    UserFormX.Show

porque tengo al final de cada UF este codigo

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If (MsgBox("¿Esta seguro de salir?", vbCritical + vbYesNo) = vbYes) Then
Cancel = False
UserForm2.Show
Else: Cancel = True
End If
End Sub

la cual evita que se cierre el UF en uso sin que me vuelva a abrir otro UF la cual es el UF PRINCIPAL(UserForm2(Menu))
Este codigo evita la utilizacion de la opcion "Unload Me" por que lo ve como que se va a cerrar el UF y me saca la CAJA DE MENSAJE.
Es por ello que debo usar la opcion "Me.Hide" para que lo oculte y asi pueda usar sin problema estos botones.
La duda esta:
1- En que puede afectar el ocultar tantos UF
2- Debo dar la instruccion de "Unload" al finalizar a aquellos que oculte mediante la opcion de "Me.Hide" o estos cierran tambien cuando cierro el UF PRINCIPAL la cual "si" sale con la opcion "Unload Me"
3- Hay algun otro metodo para "no" ocultar los UF y me cierre uno y abra otro sin que cree conflicto con el codigo que evita el cierrede los UF y la cual condiciona su cierre con la apertura del UF PRINCIPAL(Menu)

1 Respuesta

Respuesta
1

No me detuve a analizar todo tu código, solo intento aclarar algunos puntos:

1- En algún momento te aparecerá un mensaje de recursos insuficientes.

2- Debes recordar de cerrar todos aquellos que ocultarse, con Unload xxxx donde xxxx sera el UF que aun sigue oculto. Si ya activarse el UF, sera: Unload Me

3- Este pto te lo respondo mañana ;)

Sdos.

Elsa

Volviendo al pto 1 y respondiendo al titulo de la consulta: quedan en memoria.

Sdos!

Con respecto a sí sale el mensaje de  recursos insuficientes "NO" 

Y que pasaría si no ser llegan a cerrar estos que fueron ocultos?  Aguardo a su respuesta mañana

Que descanse y sueñe con un mundo mejor y códigos menos complicados ;-)

1-Mi comentario solo respondía a tu consulta: 'En que puede afectar el ocultar tantos UF'. Pero no es tu caso, porque solo ocultas el Userform2 y lo volvés a hacer visible al cerrar los otros.

3- No es necesario 'cargar' los UF (Load se usa en ciertas ocasiones, pero no veo que sea tu caso). Por lo tanto en el Userform2 tendrás estos códigos que llaman a los otros 3:

Nota: todavía tenemos que evaluar qué se ejecuta desde el botón FINALIZAR.

Luego comentas que cada uno de estos 3 UF tienen la siguiente rutina donde se observa que los UF se cierran, no se ocultan. El evento QueryClose es de cierre.

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If (MsgBox("¿Esta seguro de salir?", vbCritical + vbYesNo) = vbYes) Then
    Cancel = False
    UserForm2.Show
Else: Cancel = True
End If
End Sub

Por lo tanto solo te va quedando oculto de modo temporal el Uf 2 al que lo haces visible al ir cerrando el resto. Lo que es totalmente correcto.

Y este Uf 2 lo cierras normalmente... el botón Finalizar no debiera llamar a otro uf, sino solo contener este código:

Private Sub CommandButton3_Click()
'botón Finalizar 
Unload Me
End Sub

Notas: si los datos de un UF los necesitas en otro UF se debe mantener el UF abierto (visible u oculto) o volcar sus datos en variables o en controles de otro Uf y luego cerrarlos.

Debieras leer acerca de los Userforms multipage (o de páginas múltiples), suelen resolver más de una cuestión y problemas de tener varios Uf abiertos.

Te invito a descargar la demo de mi manual Formularios para ver los ejemplos y algunos temas desarrollados allí.

Sdos

Elsa

Mil disculpas por no haberle respondido antes. ya que usted se tomo las molestias de hacerlo.

Muchas gracias por darme una respuesta a la interrogante. Bueno.... tan claras nos la tengo aun, pero tan obscuras como antes no estan.

Muchas Gracias y saludos desde Paraguay

Si observas las imágenes veras que es simple: cada uf se cierra (con Unload) y el único que se oculta (con Hide) es el Userform2, que se cierra al presionar su botón por del extremo superior derecho o desde algún botón de Cerrar.

Sdos y no olvides valorar la consulta.

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas