En el formulario "frmModificarInsumos", así queda el código:
Private Sub UserForm_Initialize()
'cambia el color del formulario
Me.BackColor = RGB(141, 181, 147)
'Llenar los cuadro de texto con los datos del registro elegido
fila = frmBuscarInsumos.ListBox1.List(frmBuscarInsumos.ListBox1.ListIndex, 8)
For i = 1 To 7
Me.Controls("TextBox" & i).Value = Cells(fila, i)
Next i
End Sub
Private Sub CommandButton1_Click()
'Actualizar el registro
fila = frmBuscarInsumos.ListBox1.List(frmBuscarInsumos.ListBox1.ListIndex, 8)
For i = 1 To 7
If IsNumeric(Me.Controls("TextBox" & i).Value) Then
Cells(fila, i) = Val(Me.Controls("TextBox" & i).Value)
Else
Cells(fila, i) = Me.Controls("TextBox" & i).Value
End If
Next i
Unload Me
End Sub
El formulario "frmBuscarInsumos" agregué esta instrucción, para almacenar el número de fila en el listbox
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 8) = i
Queda así:
Private Sub CommandButton1_Click()
'muestra el resultado en ListBox
On Error GoTo Errores
If Me.txtFiltro1.Value = "" Then Exit Sub
Me.ListBox1.Clear
j = 1
Filas = Range("a1").CurrentRegion.Rows.Count
For i = 2 To Filas
If LCase(Cells(i, j).Offset(0, 1).Value) Like "*" & LCase(Me.txtFiltro1.Value) & "*" Then
Me.ListBox1.AddItem Cells(i, j)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, j).Offset(0, 1)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, j).Offset(0, 2)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cells(i, j).Offset(0, 3)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Cells(i, j).Offset(0, 4)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Cells(i, j).Offset(0, 5)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = Cells(i, j).Offset(0, 6)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = Cells(i, j).Offset(0, 7)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 8) = i
Else
End If
Next i
Exit Sub
Errores:
MsgBox "El Producto no Existe", vbExclamation, "Notificación"
End Sub
De esa forma, cuando filtras, en la columna 8 del listbox ya sabemos a qué fila pertenece cada registro filtrado.
Aumenté a 8 el número de columnas de listbox:
Private Sub UserForm_Initialize()
'cambia el color del formulario
Me.BackColor = RGB(141, 181, 147)
'Da formato al ListBox y trae datos de la tabla
For i = 1 To 7
Me.Controls("Label" & i) = Cells(1, i).Value
Next i
With ListBox1
.ColumnCount = 8
.ColumnWidths = "30 pt;160 pt;50 pt;50 pt;160 pt;50 pt;50 pt"
End With
End Sub
Saludos.Dante Amor