Saltar al contenido

Adecuar código obtenido con la grabadora de macros


Recommended Posts

publicado

Hola,

Lo primero, desde aquí, agradecer y pedir perdón a Gerson Pineda por su atención y mi falta de consideración. Tiene su explicación. De nuevo, perdón.

La pregunta es: De una tabla general debo hacer subtablas (por decirlo de alguna manera) Tengo que eliminar en bloque registros concretos. Lo hago utilizando los filtros pero es muy tedioso. He intentado crear una macro utilizando la grabadora de macros. Aquí me ha dado el primer error, ¿alguna solución?

Si tiene arreglo, espero que sí, ¿puedo copiar ese código en otro módulo y cambiarle los criterios del filtro para crear otra macro distinta sin tener que volver a usar la grabadora?

Un saludo,

codigo filtrar y eliminar.zip

publicado

Hola eli

En la primera linea del código se aplica el filtro sobre el rango seleccionado:.

Selection.AutoFilter

Esto provoca un error si la celda seleccionada no está dentro de la base con los datos.

Para evitarlo puedes hacer referencia al rango sin la necesidad de usar "Selection" ,por ejemplo:

sheets("EliminarPollofresco").Range("A3").AutoFilter

Puedes copiar el código y pegarlo si quieres en otro o en el mismo módulo ,solo hay que cambiar el nombre del procedimiento.

Cambias los criterios del filtro y listo.

Tambien puedes hacer referencia a una hoja especifica donde se aplica el filtro sin que esta sea la hoja activa ,que es como se aplica actualmente.

Por ejemplo:.

ActiveSheet.Range("$A$3:$J$64").AutoFilter Field:=9, Criteria1:="Pollo"

se puede cambiar por

Sheets("EliminarPollofresco").Range("$A$3:$J$64").AutoFilter Field:=9, Criteria1:="Pollo"

Si aplicas el filtro de esta forma no es necesario la primera linea ,ya que no hace falta tener una selección de celda a la que aplicar el filtro si no que se aplica el filtro en un rango indicado por el código.

publicado

Gracias, ahora mismo me pongo con ello. (digo esto para que no parezca falta de interés por mi parte....) En realidad espero tenerlo solucionado para mañana. Pero tengo otra pregunta. La hoja original no permite, por su extensión, la colocación de los botones que activan las macros. Los he empezado a colocar en la barra de acceso rápido pero eso no es factible, son demasiados. He insertado una hoja nueva y estoy insertando los botones (parece una calculadora) pero.....¿como les indico en que hoja tienen que ejecutar el filtro? ¿Vale con que el nombre de la hoja este dentro del código que tiene que ejecutar?

Voy a cambiar el código como me has indicado y hacer pruebas. Quizás me haya precipitado.

Te comento.. Muchísimas gracias.

publicado

Hola de nuevo y ¡prueba superada!

Gracias Ama por tus aportes pero de momento no los he necesitado.

He comprobado que es importante guardar el protocolo de grabación de macros, en este caso me refiero a las que me ocupan, macros para aplicar autofiltros; Ese error que apunto y que motivó mi consulta se evita siguiendo los siguientes pasos: Poner a grabar la macro, poner el nombre etc. y ¡cuidado! antes de pinchar en el embudo del filtro, seleccionar cualquier celda de la hoja y después sí, pinchar en el embudo y realizar los pasos que a cada uno le interesen, seleccionar, copiar etc y ¡cuidado! antes de detener la grabación, posicionarse de nuevo en la hoja y quitar los filtros, o sea, devolver la hoja a su situación original. Detener la macro.

Mi segunda pregunta en este post se refiere a la necesidad de utilizar un solo botón para ejecutar las macros simultáneamente. He leído y probado infinidad de soluciones que aparecen en google. El Call macro, etcetcetcetc. y sí que algo hacían puesto que de 50000 filas que filtraba en el resultado final quedaban la mitad pero ¿cuáles? No las que yo había aplicado. Bien, aunque lo he leído un poco por encima (por el tono un tanto jocoso que me ha parecido entrever entre líneas de los que han aportado la idea) he decidido probar. Dejar el Sub de la primera macro y eliminar los Sub y End Sub de las siguientes. Es decir, poner los códigos de las macros todos seguidos y dejar el último End Sub. Funcionan a la perfección.

Espero que le sirva a alguien. Gracias de nuevo y por mi parte tema cerrado.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.