Pues creo que ya lo tengo. Lo más interesante de la macro es como averiguar cuales son las filas del listbox seleccionadas. Eso se hace consultando la propiedad booleana
ListBox1. Selected(i)
Como en la fila 0 has puesto el encabezado se consulta desde la fila 1 hasta el numero de filas menos 1 del ListBox1.
Luego las filas de Base Datos se copia, se pegan y se borran ya para aprovechar el mismo bucle. Al borrar una fila todas las siguientes pasan a tener un número de orden menos, por eso se usa una variable CorrectorDeFila que disminuye también y hará que la filas seleccionadas posteriores del Listbox apunten a la auténtica fila que habrá que borrar al sumarle ese número negativo que valdrá el número de filas borradas de momento. Es un poco liosos de explicar pero creo que es fácil de comprender.
Si las filas seleccionadas fueron 2, 4 y 5, al borrar la 2 las otra pasan a los lugares 3 y 4, cuando veamos que ListBox1, selected (4) = true buscaremos los datos pero ya no están en la fila 4 sino la 3, pero sumando a 4 el CorrectorDeFila = -1 apunta a 3.
Bueno, mejor te mando el fichero y lo pruebas. Ya me dirás si está bien y si ya no quieres más no olvides puntuar.