Modificar elemento de ListBox filtrado por búsqueda y guardar cambios en el libro en la fila respectiva
Hace algo de tiempo hice la siguiente consulta...
Tengo una macro con un formulario de búsqueda, dicha búsqueda la arroja en un Listbox, al seleccionar un elemento del Listbox y picar en un botón "Modificar" me carga un nuevo formulario con todos los datos concernientes al Listbox seleccionado, mi problema esta en que luego de tener los datos en el nuevo formulario y hacerles las respectivas modificaciones... No se como hacer para que me actualice los datos en la base de datos, justo en el Listbox que tenia seleccionado...
La misma fue atendida por Dante Amor y su respuesta fue la siguiente
Private Sub C_ButtonActualizarCampos_Click() 'Por.Dante Amor Dim f As Integer f = Formulario_BuscarRegistro.ListBoxRESULTADOS.ListIndex + 2 Cells(f, "A") = TextBoxIDENTIFICACION Cells(f, "B") = TextBoxP_NOMBRE Cells(f, "C") = TextBoxS_NOMBRE Cells(f, "D") = TextBoxP_APELLIDO Cells(f, "E") = TextBoxS_APELLIDO Cells(f, "F") = TextBoxNoCAJA Cells(f, "G") = TextBoxOBSERVACIONES End Sub
Al pulsar al botón Actualizar me guarda los datos en el registro seleccionado tal como lo pedía, ahora bien, por medio del siguiente código hago una búsqueda que muestra sus resultados en el mismo ListBox
Sub CBtn_BuscarREGISTROS_Click() Dim Filas As Integer Dim Columna As Integer Dim NoResults As Boolean Dim j As Byte Dim i As Byte Sheets("Hoja1").Select On Error GoTo Errores If Trim(Me.TextBoxBUSQUEDA.Value = "") Then GoTo Errores If Trim(Me.cmbEncabezado Is Nothing) Then GoTo Errores Filas = Range("A1").CurrentRegion.Rows.Count Columna = Me.cmbEncabezado.ListIndex NoResults = False j = 1 For i = 2 To Filas If LCase(Cells(i, j).Offset(0, CInt(Columna)).Value) Like "*" & LCase(Me.TextBoxBUSQUEDA.Value) & "*" Then ' Limpia el cuadro de lista para mostrar los nuevos resultados ListBoxRESULTADOS.Clear ' Rellena el listbox con los resultados de la busqueda Me.ListBoxRESULTADOS.AddItem Cells(i, j) Me.ListBoxRESULTADOS.List(Me.ListBoxRESULTADOS.ListCount - 1, 1) = Cells(i, j).Offset(0, 1) Me.ListBoxRESULTADOS.List(Me.ListBoxRESULTADOS.ListCount - 1, 2) = Cells(i, j).Offset(0, 2) Me.ListBoxRESULTADOS.List(Me.ListBoxRESULTADOS.ListCount - 1, 3) = Cells(i, j).Offset(0, 3) Me.ListBoxRESULTADOS.List(Me.ListBoxRESULTADOS.ListCount - 1, 4) = Cells(i, j).Offset(0, 4) Me.ListBoxRESULTADOS.List(Me.ListBoxRESULTADOS.ListCount - 1, 5) = Cells(i, j).Offset(0, 5) 'Agregar número de fila Me.ListBoxRESULTADOS.List(Me.ListBoxRESULTADOS.ListCount - 1, 6) = i Exit Sub Else NoResults = True End If Next i ' Si la busqueda no produce resultados lanza este mensaje y fija el foco en la casilla de busqueda If NoResults = True Then MsgBox "Su búsqueda no produjo ningún resultado con el filtro seleccionado." & vbCrLf & _ "Intente nuevamente con otro filtro de búsqueda u otro dato.", vbCritical, "Registro no encontrado" TextBoxBUSQUEDA.Value = "" TextBoxBUSQUEDA.SetFocus End If Exit Sub Errores: MsgBox "Compruebe que seleccionó un filtro para la búsqueda" & vbCrLf & _ "y/o definió un dato a buscar e inténtelo nuevamente", vbCritical, "Error de usuario" End Sub
Cuando se hace la búsqueda y seleccionó un ítem para modificar-lo, no me actualiza el ítem seleccionado, en su caso, modifica el primer registro de la hoja...