hai*_*men 7 excel vba excel-vba
我想知道我们是否可以通过任何机会撤消宏观行动.我使用Excel工作表作为表单,我有一个提交按钮(宏),它取得工作表的计数总和(基于表单输入)并将其存储在下一个工作表中.
我的问题是,如果我们按下提交按钮而没有完成它,或者我们按两次,我存储在下一张表中的总和就变得不准确了.如果有办法我们可以撤消excel中的宏操作?我尝试使用撤消按钮,但它不适用于宏.有没有办法可以撤消它?
我们可以添加另一个宏来解除之前宏的工作吗?
小智 6
我同意所有评论者的观点,他们建议最佳实践是在允许宏进行任何更改之前验证起始条件和/或输入值。然而,在很多“我们现在需要它”的情况下,验证通常非常复杂并且完全不切实际。
我可以建议以下两件非常简单的事情:
1) 让宏在进行任何更改之前保存工作簿,但在进行更改后不保存工作簿。这样,如果您发现出现问题,您可以关闭并重新打开工作簿,然后您将回到宏执行宏所做的任何操作之前的位置。
2) 在采取任何操作之前让宏保存任何受影响的工作表的副本,因此,如果出现问题,您可以恢复(或创建宏来恢复)回到起点。
第一个选项需要最少的代码,只需:
ThisWorkbook.Save
Run Code Online (Sandbox Code Playgroud)
在让宏执行宏执行的操作之前。
我在测试宏时经常使用这种方法。
第二个选项稍微复杂一点,但也不复杂:
ThisWorkbook.Worksheets("YourWorksheet").Copy(After:=ThisWorkbook.Worksheets("NameOfSheetYouWantItToAppearAfter")
Run Code Online (Sandbox Code Playgroud)
请注意,这将激活副本。如有必要,您可以重新激活原始工作表,如下所示:
ThisWorkbook.Worksheets("OriginalWorksheet").Activate
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助!