Resetear Cuadro de Lista en nuevo Formulario

Tengo varios cuadros de lista en un formulario. Los datos de cada cuadro de lista provienen de diferentes tablas. Mi problema es que cuando termino de completar el formulario con las opciones seleccionadas de cada cuadro de lista y quiero confeccionar otro registro en el formulario, me quedan seleccionadas las opciones que elegí en los cuadros de lista del registro anterior. Quisiera que al generar un registro nuevo, no haya ninguna opcion seleccionada en los cuadros de lista.

2 Respuestas

Respuesta

Si el formulario es dependiente no tiene porque quedan activados al ir a un nuevo registro. Si quedan seleccionados es porque los cuadros combinados no pertenecen a ningún campo dependiente. En este caso programe el evento Al activar registro. Algo como:

IF Me.NewRecord THEN

   Me.cuadrocombinado1=Null

   Me.cuadrocombinado2=Null

   Me.cuadrocombinado3Null

END IF

Perdón me equivoque leí fue cuadro combinado. Siempre quedaran activados los cuadros de lista al no ser que haya alguna condición que diga lo contrario. Un cuadro de lista cambiando su origen de datos algo como

Me.cuadrolista.RowSource=""

Efectivamente estoy equivocado he interpretado mal su pregunta. Le complemento la otra solución que le dan. Tengo este formulario y selecciono 3 Departamentos estando en el registro número 1.

Ahora mes desplazo al registro número 2 y obtengo:

CÓDIGO DEL EVENTO AL ACTIVAR REGISTRO

Private Sub Form_Current()
 Dim ctlActive As Control
 Dim varPos As Variant
    For Each ctlActive In Me.Controls
      If ctlActive.ControlType = acListBox Then
        For Each varPos In ctlActive.ItemsSelected
            ctlActive.Selected(varPos) = False
        Next varPos
      End If
    Next
End Sub

Mis disculpas.

Respuesta

La opción es poner a false la propiedad 'selected' de los Items activados en el cuadro de lista.

Lo aconsejable es hacerlo en el evento Current del formulario, una muestra de como hacerlo para un cuadro de lista de nombre 'XModelo'.

Lo he creado como una subfunción para poder reutilizarlo (una vez por cada cuadro de lista a limpiar).

--- El evento Current ----
Private Sub Form_Current()
Limpia_lista XMODELO
' Limpia_lista XMODELO2 otro objeto
' Limpia_lista XMODELOnn  otro objeto
End Sub
--- La subfunción --
Private Sub Limpia_lista(XObjeto As control)
Dim zz
With XObjeto
For Each zz In .ItemsSelected
.Selected(zz) = False
Next zz
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas