Eliminar filas iguales iguales en dos listbox

Hola Carruina, pruebo suerte contigo a ver si me puedes orientar. Tengo un userform con dos combobox, dos listbox y un commandbutton. Todos los datos vienen de una hoja de Excel. Los listbox permiten multiselección (1). Los combobox se cargan con el evento change y hago un bucle en un rango de tal manera que si los datos de una columna son iguales al texto del combobox se copia esa columna y adyacentes en otro rango, y ese rango es ahora el rowsource del listbox. Imagino que la forma habitual de cargar un combobox es haciendo un filtro avanzado pero como soy principiante y no me interesaban las cabeceras tengo columnas sin títulos, no pensé en ello, y con un bucle ya me funcionaba bien . El commandbutton casa las filas iguales en los dos listbox pero solo seleccionando un movimiento en cada listbox (la opción multiselect la tengo activada para hacer otra cosa diferente más adelante con otro botón ).
El problema que tengo es que en el código del botón, cuando selecciono dos filas iguales, le digo que las elimine del primer rango de datos (del rango que luego se halla con un bucle el rowsource que se mostrara seleccionado del combobox), cuando elimino la primera fila ya me salta un error en el código del combobox _change ( me dice que no detecta la currentregion, o si suprimo esa línea del código, me da error en el bucle diciendo que no puede copiar el rango. Si en vez de eliminar las filas, le digo que borre sus contenidos y los ordene de tal manera que la fila borrada se va al final del rango, no me da error pero entonces no sé cómo hacer que el userform se muestre con el ultimo combobox seleccionado.
No te he puesto el código para no abusar de tu tiempo descifrándolo y porque sospecho que mi problema es que no entiendo cómo funciona el combobox_change cuando le doy al commandbutton (pensaba que una cosa no afectaría a la otra) pero si crees que puedes orientarme y necesitaras verlo para identificar el problema te lo envío. También te agradecería que si no puedes orientarme, me respondieras, ya que pondría la pregunta en el tablón publico o preguntaría a otro experto.
Saludos y muchas gracias.

1 respuesta

Respuesta
1
Por lo que entiendo cuando se ejecuta el código del commandbutton, estas cambiando datos de unas celdas que disparan el evento combobox_change, ¿no?
Lo primero que podrías probar es a, temporalmente, desactivar los eventos mientras se está ejecutando el código del commandbutton.
Este ejemplo deshabilita los eventos antes de que se guarde un archivo para que el evento BeforeSave no tenga lugar.
Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True
Gracias carruina, después de todo el rollo que te escribí, en esencia el problema parece ese, pero no debe serlo porque desactivando los eventos como me sugieres sigue fallando, incluso si le concreto combobox1.enabled=false antes la linea de codidgo que elimina la fila del rango que en teoría activa el evento. Solo me falla si tengo alguno de los dos combobox o los dos seleccionados.
No me preocuparía deshacer lo que he hecho y empezar de cero si lo que he hecho no esta bien diseñado porque básicamente lo hago para aprender, pero soy tozudo y quizás solo sea algún detalle que se me escapa lo que hace que no me funcione.
Intentaré resumir todo el código a las lineas básicas y te lo envío. Si veo que no puedo enviarte algo cortito no abusaré de tu tiempo y te finalizare la pregunta, ... cuanto menos me has enseñado que se pueden desactivar los eventos, cosa que no sabía.
Gracias de nuevo
Ok, enviame el código o incluso la hoja a la siguiente dirección [email protected]
También se me ocurre que rellenes tu el combobox o el listbox en lugar de asociarle un rango. De esta manera los puedes controlar tu añadiendo o quitando elementos a tu discreccion.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas