¿Quieres modificar un registro tomado del listbox con la información filtrada?
¿Quieres borrar un registro tomado del listbox con la información filtrada?
Eso lo tenías que haber comentado desde el principio.
Te explico cómo está el funcionamiento:
Si tienes estos registros:
Por ejemplo, las filas para la sucursal 3 son la 3, la 7, la 8 y la 11.
Entonces, cuando cargas la información en el listbox, la fila 1 del listbox corresponde a la fila 3 de la hoja, la 5 con la 7, la 6 con la 8 y la 9 con la 11, si te das cuenta la fila del listbox es menor en 2 a la fila de la hoja, por eso teníamos esta instrucción
x = ListBox1.ListIndex + 2
Entonces si la fila seleccionada del listbox es la 1 y le sumo 2, ¿la fila de la hoja es la 3. Hasta este punto me explico?
Ahora si aplicas un filtro a la sucursal 3, los datos en el listbox quedan así:
Entonces, si seleccionas el último registro del listbox, la fila del listbox es la 3, si a 3 le sumas 2 es igual a 5, entonces la fila de la hoja para el primer registro en la hoja es la 5, y esto no es cierto, ya que la fila en la hoja para el último registro es la 11.
Una solución, ya que no tienes un identificador único por cada registros, es cargar el número de fila de la hoja en un campo del listbox.
Qué implica: Corregir la forma de cargar, Corregir la forma de actualizar y Corregir la forma de eliminar.
Podrías valorar esta respuesta por la macro entregada. Crea una nueva para corregir todo el código. Parece que tuve un deja vu, jaja. Lo bueno de esto es que ahora ya tienes la experiencia para este tipo de situaciones.
Empiezo a realizar los cambios y te los envío en la nueva pregunta.