Excel检测PasteSpecial操作

时间:2015-12-02 21:47:48

标签: c# vb.net excel vba com

我正在研究一种评估Excel用户技能的软件。 所以用户在Excel中进行一些操作,如一系列问题所述, 我的工作是使用Excel COM对象编程来验证用户做了什么 我可以验证类似的东西;单元格格式,单元格方向,打印区域,字体类型,合并单元格等。但我正在努力验证"粘贴特殊"操作。 我是WorkSheet和WorkSheet本身的Change事件的钩子。所以我可以捕获用户所做的keyStroke以及单元格的实际格式。 但是我无法找到一种方法来判断用户是否使用过"仅格式化 - 特殊粘贴"。有没有人可以帮我这个?

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式监控撤消列表来检测“粘贴特殊”事件:

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

无需检查实际击键。

可悲的是,它没有提供任何类型的特殊粘贴的详细信息。如果您知道范围(预定义或通过Target事件中的Workbook_SheetChange),则可以执行撤消(Application.Undo),在粘贴之前存储单元格值,重做粘贴在目标。如果值已更改,则它不是“仅格式化 - 特殊粘贴”。希望这会有所帮助。