是否可以撤消宏操作?

时间:2015-11-19 20:30:27

标签: excel vba excel-vba

我想知道我们是否可以通过任何机会撤消宏观行动。我使用Excel工作表作为表单,我有一个提交按钮(宏),它取得工作表的计数总和(基于表单输入)并将其存储在下一个工作表中。

我的问题是,如果我们按下提交按钮而没有完成它,或者如果我们按两次,那么我在下一张纸中存储的总和就变得不准确了。如果有办法我们可以撤消excel中的宏操作?我尝试使用撤消按钮,但它不适用于宏。有没有办法可以撤消它?

我们可以添加另一个宏来撤消之前宏的工作吗?

1 个答案:

答案 0 :(得分:1)

我同意所有评论者的意见,他们认为最佳实践是在允许宏进行任何更改之前验证起始条件和/或输入值。但是,在很多“我们现在需要”情况下,验证通常非常复杂并且完全不切实际。

以下是我可以建议的两个非常简单的事情:

1)使宏在进行任何更改之前保存工作簿,但在进行更改后不要保存工作簿。这样,如果您发现有问题,可以关闭并重新打开工作簿,然后回到宏执行宏操作之前的位置。

2)让宏在执行任何操作之前保存所有受影响的工作表的副本,因此,如果出现问题,您可以还原(或创建要还原的宏)回到起点。

第一个选项所需的代码量最少,只需:

ThisWorkbook.Save

在让宏执行宏操作之前。

在测试宏时,我经常使用这种方法。

第二个选项稍微复杂一点,但不多:

ThisWorkbook.Worksheets("YourWorksheet").Copy(After:=ThisWorkbook.Worksheets("NameOfSheetYouWantItToAppearAfter")

请注意,这将激活副本。如有必要,您可以像这样重新激活原始工作表:

ThisWorkbook.Worksheets("OriginalWorksheet").Activate

希望对您有帮助!