Lograr que el contenido de un ListBox filtrado, se actualice, una vez se haya realizado un cambio en uno de sus elementos.

Tengo un ListBox en un Formulario, ese listbox, se llena con los datos Filtrados mediante un ComboBox, cuando aparecen los datos filtrados, selecciono uno de esos elementos del ListBox y automáticamente me carga todos los datos en un Formulario para ser editados.

Ahora lo que necesito es que cuando, actualizo la información, automaticametne se refleje el cambio en el listbox filtrado.

2 respuestas

Respuesta
1

Una vez acabes de editar lo que quieras, escoge un evento, y añades el código:

NombreDelListBox. Requery

Esto hace que se refresque la consulta subyacente del listbox

Hola Tomas, gracias por tu intención de ayudarme.

Te cuento, que uso MS Excel.

Intenté colocar la línea de código que me dejaste en la rutina del Botón de COmando actualizar, pero me dice que no se encuentra el método.

La coloqué así: LisBox1.Requery, pero no me funcionó.

Mira Tomas: En un Formulario, tengo un combobox, que se carga con valores unicos en el evento Initialize.

Con los datos cargados en el ComboBox, realizó un filtro y los resultados se cargan en un ListBox.

Selecciono uno de esos elementos que se cargan en el ListBox y le doy un click, de inmediato, se activa la celda donde esta contenido y ahí mismo, esos datos se cargan en un formulario que me permite editarlos.

Una vez termino de editarlos, los devuelvo a las celdas ya modificados, se cierra el formulario de edicion, pero el ListBox, sigue ahí, mostrandome el mismo dato que modifiqué.

para ver los cambios, entonces, debo volver a seleccionar el criterio de filtro en el ComboBox y ahí si me carga de nuevo los datos ya actualizados.

Lo que quiero lograr, es que no tenga ponerme a seleccionar de nuevo el criterio en el ComboBox para ver si los datos me quedaron actualizados correctamente.

espero haber tenido la fortuna de hacerme entender.

Gracias por tu ayuda, estaré muy atento.

Creo que la respuesta de Dante es muy buena.

No tengo nada más que añadir.

Siento no haber podido ser de mucha ayuda

Respuesta
1

Con este control actualizas tu listbox:

Private Sub ComboBox1_Change()
'Act.Por.Dante Amor
    '
    ListBox1.SetFocus   ' RECIBE EL FOCO AL CAMBIAR DE OPCION.
    Application.ScreenUpdating = False
    'Busque = ComboBox1.Value
        ListBox1.Clear
    If ComboBox1.Value = Empty Then
        Exit Sub
    Else
        Set r = Sheets("Personal").Range("M1:M" & Sheets("Personal").Range("M" & Rows.Count).End(xlUp).Row)
        Set b = r.Find(What:=ComboBox1, LookIn:=xlValues, lookat:=xlPart)
        '=
        If Not b Is Nothing Then
            FirstCell = b.Address
            Do
                With ListBox1
                    .ColumnCount = 5
                    .ColumnWidths = "18;40;120;120;50"
                    .AddItem ListBox1.ListCount + 1
                    .Column(1, ListBox1.ListCount - 1) = b.Offset(0, -8).Value
                    .Column(2, ListBox1.ListCount - 1) = b.Offset(0, -6).Value
                    .Column(3, ListBox1.ListCount - 1) = b.Offset(0, -5).Value
                    .Column(4, ListBox1.ListCount - 1) = b.Offset(0, -4).Value
                    .Column(5, ListBox1.ListCount - 1) = b.Row
                    '=
                End With
                Set b = r.FindNext(b)
            Loop Until FirstCell = b.Address
        End If
        Set WS = Nothing
        Set b = Nothing
    End If
    '=
    Application.ScreenUpdating = True
End Sub

Entonces cuando termines la edición, tienes que llamar nuevamente al control combobox1_change

Puede ser así:

Private Sub UserForm_Activate()
ComboBox1_Change
End Sub

Cuando te sales del form de edición y regresas al formulario, entonces el formulario se activa y puedes ejecutar el evento combobox1_change


Otra opción es cuando terminas de modifcar

Private Sub ListBox1_Click()
'Por.Dante Amor
    fila = ListBox1.List(ListBox1.ListIndex, 5)
    Range("A" & fila).Select
    frmModificar.Show
    ComboBox1_Change
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas