¿Porque se ejecuta alternamente UserForm_Activate ?

A tod@s!

Tengo un formulario ProgramarTrabajoEnSemana que al activarse actualiza un listbox del mismo formulario.

Desde este ListBox al elegir un registro llamo a otro formulario (emergente) ModificarOTsSemana, con varios campos que puedo modificar. Este formulario sobresale sobre el anterior ProgramarTrabajoEnSemana .

Quiero que al cerrarse el formulario ModificarOTsSemana y recaer el foco sobre el formulario ProgramarTrabajoEnSemana actualize el listbox, no siempre lo hace y no hay un condicionante.

Que me aconsejais, ¿hacer? Al cerrar el formulario y no ejecutar el formulario inferior ... Activate.

Respuesta
1

Vamos a suponer que ese cuadro de lista se llama Elegir. En el evento Al cerrar de ese formulario emergente podías poner algo como

if currentproject.allforms!programartrabajoenesemana.isloaded then

forms!Programartrabajoensemana!elegir.requery

end if

Es decir, que al cerrar el emergente si el otro formulario está abierto ( que sí lo está pues el actual lo has abierto desde él) haga que el cuadro de lista "reconsulte" con su origen de datos.

Otra cosa, ¿Por qué poner que el segundo formulario sea emergente, si en la instrucción para abrirlo puedes poner simplemente

DoCmd. OpenForm "Modificar...",,,,, acDialog

Te abre ese informe, encima del otro y en vista diálogo.

2 respuestas más de otros expertos

Respuesta
3

Te recuerdo que aún tienes esta consulta sin responder/comentar/cerrar:

¿Cómo utilizar los controles de un formulario, cuando llamo a una macro común en Excel VBA?

Con respecto a trabajar con 2 userforms, veamos si queda clara la explicación sino me puedes solicitar un ejemplo a mis correos (aparecen en la sección Contactos del sitio que dejo al pie).

Lamentablemente en este sitio ya no se pueden dejar imágenes. Pero este es un tema habitual cuando llamamos a un segundo formulario para consultar o para completar campos.

Digamos que tenemos un UF1, con un botón que llama al UF2 desde donde se completan algunos campos más. Al cerrarlo, entiendo que necesitas que siga en el UF1.

Entonces el botón del UF1 hace la llamada (aquí utilicé una imagen pero puede ser cualquier botón)

Private Sub Image2_Click()     
Userform2.Show
End Sub

Al cerrar este 2do UF, no hay que hacer nada más.... el proceso continúa en el UF1 de modo normal. Si la llamada se efectuó desde un CommandButton donde hay varias instrucciones, seguirá con la instrucción siguiente. Por ejemplo:

Private Sub CommandButton1_Click()
sino = MsgBox("¿Deseas actualizar previamente la lista de Precios?", vbYesNo)
'si la respuesta es SI, se abrirá el 2do UF
If sino = vbYes Then UserForm2.Show
'al volver continuará con el resto de las instrucciones
MsgBox "He vuelto!"
'Set tablax = hojax.ListObjects(1)
'etc
End Sub

Para que esto se ejecute correctamente, el Userform2 debe tener su propiedad ShowModal en True.

Respuesta
1

¿Su pregunta es de Excel?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas