Mientras trabaja en Excel, existe una pequeña «red de seguridad» en lo que respecta a los cambios que realiza. La mayoría de la gente sabe que si estropean las cosas, pueden presionar rápidamente Ctrl + Z o hacer clic en la herramienta Deshacer en la parte superior izquierda de la ventana del programa. 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 brinda 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. El usuario puede utilizar esta información para «deshacer» la macro que ha creado. 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 (12513) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

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