Las macros se ejecutan bien individualmente, pero no colectivamente (Microsoft Excel)
Guillermo tiene una serie de macros que ejecuta rutinariamente, y cuando ejecuta cada una de ellas manualmente, funcionan bien. Intentó colocar todas las macros en una macro «RunAll» (por lo que solo tiene que ejecutar una macro en lugar de seis macros individuales) y ahora una de ellas no se ejecuta correctamente. Cuando ejecuta la macro RunAll, obtiene un error de que una celda está protegida y es de solo lectura. Sin embargo, no hay protección en la hoja, y si ejecuta las macros individualmente, no recibe el error.
No hace falta decir que la macro que se ejecuta bien individualmente, pero no junto con las demás, encuentra algo que hace que no funcione correctamente. Es probable que eso signifique que una macro que se ejecuta antes de dejar el libro de trabajo en un estado diferente al que tendría si ejecutara las macros individualmente.
Por ejemplo, si la macro que funciona mal es la tercera de la serie que se ejecuta, verifique las dos primeras macros para ver qué están haciendo. ¿Cambian las celdas seleccionadas? ¿Cambian la hoja de trabajo activa? ¿Cambian las condiciones que espera la tercera macro? Cualquiera de estos podría hacer que la tercera macro no funcione correctamente.
La segunda sugerencia, sobre la hoja de trabajo activa, es el escenario más probable. Cuando ejecuta la macro individualmente, es muy probable que la ejecute con una hoja de trabajo en particular activa. Sin embargo, las otras macros pueden cambiar la hoja de trabajo activa a una diferente, y esa hoja de trabajo diferente puede ser la que tiene la protección aplicada.
La solución es verificar cada macro para asegurarse de que guarde la información de ubicación (hoja de trabajo, celda activa, celdas seleccionadas, etc.)
antes de realizar cambios en cualquiera de ellos. Una vez guardados, es fácil restaurarlos al final de la macro.
Si todavía no funciona, es posible que debas depurarlo un poco. En la macro «RunAll», use el Editor de VBA para establecer un punto de interrupción en la línea que llama a la macro que falla. A continuación, puede utilizar el «Paso a paso»
comando para entrar en la macro y examinar dónde se produce la falla. Preste especial atención a qué hoja de trabajo y celdas está tratando de cambiar la macro, y luego vea si puede averiguar qué está sucediendo con las macros anteriores para conducir a esa hoja de trabajo y celdas. Puede utilizar cualquiera de las siguientes líneas en la ventana Inmediato para ver dónde se encuentra:
? ActiveSheet.Name ? ActiveCell.Address
Si bien rastrear este tipo de errores puede ser un desafío, la luz al final del túnel es que terminará con una macro «RunAll» que funciona perfectamente y que puede ahorrarle una gran cantidad de tiempo.
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (12710) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.