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 SubCuando 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...