在Excel中工作时,您所做的更改会有一些“安全网”。大多数人都知道,如果搞砸了,他们可以快速按Ctrl + Z或单击程序窗口左上角的“撤消”工具。如果您不喜欢刚刚做的事情,则可以轻松地撤消它,然后回到以前的状态。

但是,当您运行宏时,该宏在“撤消”列表中不会“播放得很好”。实际上,运行宏会完全删除“撤消”列表,因此您不能自动撤消运行宏的影响。在Excel或VBA中,没有内部命令来保存“撤消”列表。但是,有两种方法可以解决该问题。

如果您感觉要撤消宏的效果,则可以做的第一件事是在运行宏之前保存工作簿。实际上,这为您提供了工作簿的“宏前”版本。

如果要稍后还原到该版本,只需关闭工作簿而不保存,然后从磁盘重新加载即可。

另一种选择是重新考虑您处理宏的方式。如果您有一个宏在工作表中进行大量信息处理,请对该宏进行编码,以使其在内存中保持任何更改状态。然后,您可以创建一个单独的宏来读取此信息,并有效地撤消第一个宏的影响。

为使此方法真正方便,主要宏的最后一步是将信息“填充”到“撤消”堆栈中。然后,用户可以使用此信息来“撤消”您创建的宏。例如,以下宏命令可能是主宏中的最后一个:

Application.OnUndo "Primary Macro", "UndoPrimary"

执行此命令后,当用户查看“撤消”列表时,他或她将看到文本“主宏”。如果他们从“撤消”列表中选择此选项,则将执行“撤消”宏(UndoPrimary)。

您应该注意,这种方法在运行宏之前不会保存“撤消”列表中的内容-似乎没有办法。当您的主要宏运行完毕时,“撤消”列表上只有一个选项可用:“主要宏”。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(12513)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: