Te muestro un ejemplo muy sencillo con 2 controles ListBox: uno se alimenta con la propiedad RowSource y el otro recorriendo la hoja de datos. Por supuesto que todo el código es de ejemplo, mejorable. Es para que observes la diferencia al momento de editar un registro.
Private Sub UserForm_Initialize()
ListBox1.RowSource = "=Listas!TablaMediosP"
For i = 8 To 15
ListBox2.AddItem Sheets("Listas").Range("D" & i)
Next i
End Sub
Luego, al clic en cada Listbox, se pasa el dato a los controles textbox y allí se modifican.
Private Sub ListBox1_Click()
TextBox1 = ListBox1.List(ListBox1.ListIndex)
End Sub
Private Sub ListBox2_Click()
TextBox2 = ListBox2.List(ListBox2.ListIndex)
End Sub
El botón de Editar envía a la hoja los campos modificados. Y en la siguiente imagen se observa el resultado en cada ListBox dependiendo de cómo han sido alimentados.
Seguramente tendrás uno u otro caso. Si utilizas la propiedad Rowsource no tendrás que hacer nada (*), en cambio si utilizas 'Additem' tendrás que limpiar la lista y volverla a cargar, desde el mismo botón Editar:
Private Sub CommandButton1_Click() 'botón EDITAR
'Ya tendrás el modo de identificar la fila correspondiente en la hoja
'luego del pase a la hoja.......
'opcional: limpiar los controls
TextBox1 = "": TextBox2 = ""
'volver a llenar el listBox2
ListBox2.Clear
For i = 8 To 15
ListBox2.AddItem Sheets("Listas").Range("D" & i)
Next i
End Sub
Espero que el ejemplo te sirva para adaptarlo a tu caso.
*Te invito a visitar la sección Manuales... acabo de publicar el Manual 500Macros+365 (revisión y actualización completa del manual 500Macros incluyendo código apto para la versión Excel 365 + nuevos capítulos. Imperdible!