Así queda ahora tu código para filtrar en el form consulta
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
frm_registro_accidentes.Show
End Sub
'
Private Sub txt_Buscar_Change()
'buscar por nombre
If Me.txt_Buscar.Value = Empty Then
MsgBox "Escriba un Nombre o Matricuala de Agremiado"
Me.ListBox1.Clear
Me.txt_Buscar.SetFocus
Exit Sub
End If
Call Llenar_List(Me.txt_Buscar.Value, 3, 4)
Me.txt_Buscar.SetFocus
Me.txt_buscar2 = Empty
Me.txt_buscar3 = Empty
End Sub
'
Private Sub txt_buscar2_Change()
'buscar por taxi
Call Llenar_List(Me.txt_buscar2.Value, 5, 5)
Me.txt_buscar2.SetFocus
Me.txt_Buscar = Empty
Me.txt_buscar3 = Empty
End Sub
Private Sub txt_buscar3_Change()
'buscar por num accidente
Call Llenar_List(Me.txt_buscar3.Value, 1, 1)
Me.txt_buscar3.SetFocus
Me.txt_buscar2 = Empty
Me.txt_Buscar = Empty
End Sub
Sub Llenar_List(texto, col, co2)
'Por.Dante Amor
Me.ListBox1.Clear
Items = Range("Tabla1").CurrentRegion.Rows.Count
texto = "*" & LCase(texto) & "*"
For i = 3 To Items
If LCase(Cells(i, col).Value) Like texto Or LCase(Cells(i, co2).Value) Like texto Then
Me.ListBox1.AddItem Cells(i, 3)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, 4)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, 1)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cells(i, 17)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Cells(i, 5)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Cells(i, 14)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = i
End If
Next i
End Sub
'
Private Sub UserForm_Initialize()
Sheets(3).Select
'Le digo cuántas columnas
ListBox1.ColumnCount = 6
'Asigno el ancho a cada columna
Me.ListBox1.ColumnWidths = "50 pt;180 pt;80 pt;60 pt;60 pt;30 pt"
'El origen de los datos es la Tabla1
' ListBox1.RowSource = "Tabla1"
End Sub
Private Sub UserForm_Terminate()
'Sheets(1).Select
End Sub
Private Sub txt_buscar_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(StrConv(Chr$(KeyAscii), vbUpperCase))
End Sub
Private Sub txt_buscar2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(StrConv(Chr$(KeyAscii), vbUpperCase))
End Sub
Private Sub txt_buscar3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(StrConv(Chr$(KeyAscii), vbUpperCase))
End Sub
Puse en un solo procedimiento el filtrado, en esta línea almaceno el número de fila de la hoja.
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = i
Entonces, con esa línea ya podemos saber cuando le des doble click a qué registro de la hoja vas a modificar.
En tu form registro_accidentes, el código quedaría así dentro del evento initialize
'llena los datos con el registro seleccionado en frm_consulta_accidentes
Fila = frm_consulta_accidentes.ListBox1.List(frm_consulta_accidentes.ListBox1.ListIndex, 6)
txt_fecha1 = Cells(Fila, "B")
txt_hora = Cells(Fila, "G")
txt_ubicacion = Cells(Fila, "F")
txt_matricula = Cells(Fila, "C")
Te puse unos ejemplos, completa los demás textbox.
Sal u dos, r ecuerda cambiar la valoración a la respuesta.