Mientras trabaja en Excel, existe una pequeña «red de seguridad» en lo que respecta a los cambios que realiza. La mayoría de las personas saben que si se equivocan, pueden presionar Ctrl + Z rápidamente o elegir el comando Deshacer del menú Editar o usar la herramienta Deshacer en la barra de herramientas. Si no le gusta lo que acaba de hacer, puede deshacerlo fácilmente y volver a ser como antes.

Sin embargo, cuando ejecuta una macro, la macro no «funciona bien» con la lista Deshacer. De hecho, la ejecución de una macro borra por completo la lista Deshacer y, por lo tanto, no puede deshacer automáticamente los efectos de ejecutar la macro. No hay ningún comando intrínseco, en Excel o en VBA, para conservar la lista Deshacer. Sin embargo, hay un par de formas de abordar el problema.

Si cree que es posible que desee deshacer los efectos de una macro, lo primero que puede hacer es guardar su libro antes de ejecutar la macro. Esto, en efecto, le da una versión «pre-macro» del libro de trabajo.

Si luego desea volver a esta versión, simplemente cierre el libro de trabajo sin guardar y luego vuelva a cargarlo desde el disco.

Otra opción es repensar la forma en que haces tus macros. Si tiene una macro que procesa mucho la información en su hoja de trabajo, codifique la macro para que mantenga, en la memoria, el estado de cualquier cosa que cambie. A continuación, puede crear una macro independiente que lea esta información y deshaga de forma eficaz los efectos de la primera macro.

Para que este enfoque sea realmente útil, el último paso en su macro principal puede ser «rellenar» información en la pila Deshacer. Esta información se puede utilizar, pero el usuario, para «deshacer» la macro que creó. Por ejemplo, el siguiente comando de macro podría ser el último en su macro principal:

Application.OnUndo "Primary Macro", "UndoPrimary"

Después de este comando, cuando el usuario mira la lista Deshacer, verá el texto «Macro principal». Si eligen esta opción de la lista Deshacer, se ejecutará su macro «deshacer» (UndoPrimary).

Debe tener en cuenta que este enfoque no guarda lo que estaba en la lista Deshacer antes de ejecutar la macro; parece que no hay forma de hacerlo. Cuando su macro principal termine de ejecutarse, solo habrá una única opción disponible en la lista Deshacer: Macro principal.

_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 (2060) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

link: / excelribbon-Preserving_the_Undo_List [Preservando la lista de deshacer].