特定于表的宏

时间:2013-06-26 13:38:54

标签: excel worksheet visual-studio-macros

我有一张包含三张excel表的工作簿。 我希望用户能够从第三张表中复制数据,这是第二张表中的计算结果。 但是,我正在使用的代码

'The code for the Macro
Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim col As String
Dim msg As String
col = Split(Target.Address(1, 0), "AOS")(0)
'Permet d'éviter les modifications des modifications manuelles des cellules calculées automatiquement
If Intersect(Target, Sheets("AOS").Range("A3:AP100")) Is Nothing Then Exit Sub

'We're going to make a change, so turn this off
'so that macro doesn't get called infinitely
Sheets("AOS").Application.EnableEvents = False

Sheets("AOS").Application.Undo
MsgBox "Can't touch this!", vbCritical + vbOKOnly, "Error !!!!!"
Sheets("AOS").Application.EnableEvents = True

它也是第二张表中的撤消更改。 好像是Sheets(“AOS”)。Application.Undo不能正常工作。

任何建议..?

2 个答案:

答案 0 :(得分:0)

您正在使用SelectionChange事件,您应该使用Change事件。每次更改选择时都会出现SelectionChange,因此当您使用“撤消”时,它会反转最后一次可逆动作,这可能发生在另一个工作表中。

答案 1 :(得分:0)

来自MSDN:

  

此方法仅撤消用户之前采取的最后一个操作   运行宏,它必须是宏中的第一行。它   不能用于撤消Visual Basic命令。