2013-06-26 64 views
0

我有一个工作簿,里面有三张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不能正常工作。

任何建议..?

回答

0

您正在使用SelectionChange事件,您应该使用Change事件。每次选择更改时都会出现SelectionChange,因此当您使用“撤消”时,它会颠倒上次可逆动作,而这种动作可能发生在不同的工作表中。

0

从MSDN:

此方法将撤销只能由用户所采取的最后一个动作之前 运行宏,并且必须是在宏的第一行。它不能用于 撤消Visual Basic命令。

相关问题