Excel检测粘贴特殊操作

问题描述:

我正在研究评估用户在Excel上的技能的软件。 因此,用户可以在Excel中执行一些操作,正如一系列问题 中提到的那样,我的工作是使用Excel COM Object对某些内容进行编程以验证用户已完成的操作。
我可以验证的东西,如;单元格格式,单元格方向,打印区域,字体类型,合并单元格等。但我正在努力验证“粘贴特殊”操作。 我有一个WorkSheet的Change事件和WorkSheet本身的钩子。所以我可以捕捉到用户所做的keyStroke以及单元格的实际格式。 但我无法找到一种方式来判断用户是否使用了“仅格式 - 特殊粘贴”。有没有人可以帮助我呢?Excel检测粘贴特殊操作

+0

如果你能赶上“记录宏”,你可以写一个日志文件....但这只是一个想法,我不知道是否以及如何可能... –

您可以通过监控撤消列表检测“选择性粘贴”事件:

If Application.CommandBars("Standard").Controls("&Undo").List(1) = "Paste Special" Then 

不需要检查的实际按键。

可悲的是,它没有提供什么类型的粘贴特殊执行的任何进一步的细节。如果知道范围(预定义或通过Workbook_SheetChange事件中的Target),则可以执行撤消操作(Application.Undo),在粘贴之前存储单元格值,然后在目标上重新粘贴粘贴。如果值已更改,则不是“仅格式 - 特殊粘贴”。希望这可以帮助。

+0

谢谢你的输入,你的建议结合一些小单元格隐藏的格式,如自定义格式“0,00E + 00”,将会诀窍 – Hugo

+0

确保在工作表尽快关闭事件检测('Application.EnableEvents = False')更改事件触发器,因为只要脚本将值粘贴到单元格,它就会再次触发。这将导致无限循环。完成所有需要的操作后,重新启用事件检测('Application.EnableEvents = True')。干杯, – nbayly

+0

其实我的脚本没有粘贴任何东西,它只是监视用户在做什么 – Hugo