Macros Run Fine individualmente, pero no Colectivamente

January 11

Guillermo tiene una serie de macros que se ejecuta de forma rutinaria, y cuando se encuentra cada uno de ellos de forma manual, que funciona muy bien. Trató de colocar todas las macros en un macro "RunAll" (por lo que sólo tiene que ejecutar una macro en lugar de seis macros individuales) y ahora uno de ellos no se ejecuta correctamente. Cuando se ejecuta la macro RunAll, obtiene un error que una célula está protegido y sólo lectura. Sin embargo, no hay protección en la hoja, y si ejecuta las macros de forma individual, no se sale el error.

No hace falta decir que la macro que se ejecuta bien de forma individual, pero no en relación con los demás se encuentra con algo que está provocando que no funciona bien. Es probable que eso significa que que un funcionamiento macro antes de que está dejando el libro en un estado diferente de lo que sería en si ejecutó las macros de forma individual.

Por ejemplo, si la macro se porta mal es el tercero de la serie para funcionar, revise las dos primeras macros para ver lo que están haciendo. ¿Cambian las celdas seleccionadas? ¿Cambian la hoja de cálculo activa? ¿Cambian las condiciones que el tercero macro espera? Cualquiera de ellos podría causar el tercer macro no funcione correctamente.

Es la segunda sugerencia acerca de la hoja de trabajo activa que es el escenario más probable. Cuando se ejecuta la macro de forma individual, es muy probable que se ejecuta con una hoja de cálculo determinada activo. Las otras macros, sin embargo, pueden cambiar la hoja de cálculo activa a una diferente, y que diferentes hoja de cálculo puede ser el que tiene la protección que se le aplica.

La solución es comprobar cada macro para asegurarse de que se guarda la información de localización (hoja, celda activa, las células seleccionadas, etc.) antes de hacer cualquier cambio en cualquiera de ellos. Con los salvó, es un asunto fácil para restaurarlos al final de la macro.

Si aún así no lo hace, entonces puede que tenga que hacer un poco de depuración. En la macro "RunAll", utilice el Editor de VBA para establecer un punto de interrupción en la línea que llama a la macro no. A continuación, puede utilizar el "Paso a paso" de comandos para entrar en el macro y examinar dónde se produce el fallo. Preste especial atención a la hoja de trabajo y lo que las células de la macro está tratando de cambiar, y luego ver si puede averiguar lo que está pasando con las macros anteriores para conducir a esa hoja de cálculo y las células. Puede utilizar cualquiera de las siguientes líneas en la ventana Inmediato para ver dónde se encuentra:

? ActiveSheet.Name
? ActiveCell.Address

Mientras rastrear este tipo de errores puede ser un desafío, la luz al final del túnel es que usted va a terminar con una macro funcione perfectamente "RunAll" que le puede ahorrar una gran cantidad de tiempo.

ExcelTips es su fuente de capacitación rentable Microsoft Excel. Esta punta (12.710) se aplica a Microsoft Excel 2007, 2010, y 2013.