Este es el resultado de la macro, se tarda un poco tu archivo tiene algo que hace lenta la macro, supongo que son los NA, tecleas una letra y esta va filtrando conforme tecleas, como no mencionaste sobre que columna se hará el filtro incluí un combobox para seleccionar el campo sobre el que hará el filtro
esta otra pantalla es el resultado de la macro para modificar datos, una vez que selecciones un registro del listbox y abras el formulario 2 los datos se cargaran en automático y una vez que termines de modificar estos se copiaran a la fila asignada
estas son las macros para cargar datos
Option Base 1
Private Sub CC_Nombre_Change()
End Sub
Private Sub CommandButton1_Click()
frmEditar.Show
End Sub
Private Sub Label1_Click()
End Sub
Private Sub ListBox1_Click()
Set DATOS = Range("DATOS")
VALOR = ListBox1.Value + 1
DATOS.Rows(VALOR).Name = "SECUENCIA"
End Sub
Private Sub UserForm_Initialize()
Set DATOS = Sheets("datos").Range("A1").CurrentRegion
Set funcion = WorksheetFunction
With DATOS
.Name = "datos"
With ListBox1
.ColumnCount = DATOS.Columns.Count
.ColumnHeads = False
End With
matriz = .Rows(1)
ComboBox1.List = funcion.Transpose(matriz)
End With
End Sub
Private Sub txtFiltro1_Change()
Dim funcion As WorksheetFunction
Set origen = Range("datos")
Set funcion = WorksheetFunction
VALOR = txtFiltro1
filas = origen.Rows.Count
columnas = origen.Columns.Count
col = ComboBox1.ListIndex + 1
If Trim(VALOR) = "" Then
ListBox1.Clear
Exit Sub
End If
cuenta = funcion.CountIf(origen.Columns(col), "*" & VALOR & "*")
ListBox1 = Clear
ReDim matriz(cuenta, columnas): X = 1
For I = 1 To filas
strg = origen.Cells(I, col).Value:
If UCase(strg) Like "*" & UCase(VALOR) & "*" Then
For j = 2 To columnas
matriz(X, j - 1) = origen.Cells(I, j - 1)
Next j
X = X + 1
End If
Next I
With C
With ListBox1
.List = matriz
Label3 = .ListCount & " COINCIDENCIAS ENCONTRADAS"
End With
End With
End Sub
y esta es la macro para el formulario 2
Private Sub CommandButton1_Click()
Set INFO = Range("SECUENCIA")
C = INFO.Columns.Count
For I = 2 To C
INFO.Cells(1, I) = frmEditar.Controls("TEXTBOX" & I - 1)
Next I
End Sub
Private Sub CommandButton2_Click()
End
End Sub
Private Sub UserForm_Activate()
Set INFO = Range("SECUENCIA")
C = INFO.Columns.Count
For I = 2 To C
DATO = INFO.Cells(1, I)
On Error Resume Next
frmEditar.Controls("TEXTBOX" & I - 1) = DATO
On Error GoTo 0
Next I
End Sub
Private Sub UserForm_Click()
End Sub