如何撤消通过VBA执行的操作

如何撤消通过VBA执行的操作,vba,excel,Vba,Excel,我编写了一个简单的VBA代码,当按下一个按钮时,它只会删除一张表中的三列 按下按钮时,列将被删除。这部分很好用。我想做的是通过Excel中的STOCK undo按钮使此操作可逆。目前,我所知道的任何方式都无法撤消对这些行的删除,这意味着如果意外按下按钮,则必须退出并重新打开工作表 这是我当前的代码,请随意评论一下,虽然我正在学习,但我对VBA最佳实践不是很熟悉 Private Sub CommandButton1_Click() Dim Alias_Adds As Worksheet Set A

我编写了一个简单的VBA代码,当按下一个按钮时,它只会删除一张表中的三列

按下按钮时,列将被删除。这部分很好用。我想做的是通过Excel中的STOCK undo按钮使此操作可逆。目前,我所知道的任何方式都无法撤消对这些行的删除,这意味着如果意外按下按钮,则必须退出并重新打开工作表

这是我当前的代码,请随意评论一下,虽然我正在学习,但我对VBA最佳实践不是很熟悉

Private Sub CommandButton1_Click()
Dim Alias_Adds As Worksheet
Set Alias_Adds = Sheets("Alias_Adds")

MSG1 = MsgBox("Are you ready to delete the validation columns? (A, F, and G?)", vbYesNo, "")

If MSG1 = vbYes Then
With Alias_Adds
        Alias_Adds.Columns("A").EntireColumn.Delete 'this is the line that is cauing the error
        Alias_Adds.Columns("E:F").EntireColumn.Delete
    End With
Else
  MsgBox "Ok, let's wait a bit to delete those columns"
End If

End Sub

由于Excel VBA不支持其自身操作的常规撤消,因此必须将安全功能构建到逻辑中


与其简单地删除列,不如先将它们复制到未使用的位置。数据随后可供检索。

可能重复:我不相信这是重复的。链接的问题希望使用附加的VBA按钮来取消由其第一个VBA按钮执行的操作。我希望我的VBA操作可以通过Excel的“库存撤消”按钮可逆。@告诉我如何-我确实阅读了你发布的链接,我发现它非常有用。所以绝对没有办法通过“库存撤消”按钮使我的VBA操作可逆?如果不是,从最佳实践的角度来看,您建议在何处保存数据?我是否应该使用VBA将数据保存在3个单独的数组中,或者,将其保存到工作簿中的隐藏工作表中,并在每次按下按钮时覆盖它是更好的做法吗?您可以选择………使用隐藏工作表,或在同一工作表中使用列,或使用内部VBA arraysAlright,我想我可以通过保存到另一工作表来破解它,但只是为了便于学习,你能给我看一些使用数组的代码吗?通过VBA在内部完成这一切会比其他方法慢吗?使用VBA数组@Adam会更快吗J@AdamJ实际上,阵列速度更快,但要小心: