Excel检测PasteSpecial操作
Excel Detect PasteSpecial operation
我正在开发一种软件,可以评估用户在 Excel 上的技能。
因此用户在 Excel 内进行了一些操作,如一系列问题中所问,
我的工作是使用 Excel COM 对象编写一些程序来验证用户所做的事情。
我能够验证类似的东西;单元格格式、单元格方向、打印区域、字体类型、合并单元格等。但我正在努力验证 "Paste Special" 操作。
我对 WorkSheet 的 Change 事件和 WorkSheet 本身很感兴趣。这样我就可以捕捉到用户执行的 keyStroke 操作以及单元格的实际格式。
但我无法找到一种方法来判断用户是否使用了 "Format Only - Special Paste"。有人可以帮我解决这个问题吗?
您可以通过监视撤消列表来检测 "Paste Special" 事件:
If Application.CommandBars("Standard").Controls("&Undo").List(1) = "Paste Special" Then
不需要检查实际击键。
遗憾的是,它没有提供任何有关执行何种类型的特殊粘贴的更多详细信息。如果您知道范围(预定义或通过 Workbook_SheetChange
事件中的 Target
),您可以执行撤消操作 (Application.Undo
),在粘贴之前存储单元格值,重做粘贴在目标。如果值已更改,则它不是 "Format Only - Special Paste"。希望这有帮助。
我正在开发一种软件,可以评估用户在 Excel 上的技能。
因此用户在 Excel 内进行了一些操作,如一系列问题中所问,
我的工作是使用 Excel COM 对象编写一些程序来验证用户所做的事情。
我能够验证类似的东西;单元格格式、单元格方向、打印区域、字体类型、合并单元格等。但我正在努力验证 "Paste Special" 操作。
我对 WorkSheet 的 Change 事件和 WorkSheet 本身很感兴趣。这样我就可以捕捉到用户执行的 keyStroke 操作以及单元格的实际格式。
但我无法找到一种方法来判断用户是否使用了 "Format Only - Special Paste"。有人可以帮我解决这个问题吗?
您可以通过监视撤消列表来检测 "Paste Special" 事件:
If Application.CommandBars("Standard").Controls("&Undo").List(1) = "Paste Special" Then
不需要检查实际击键。
遗憾的是,它没有提供任何有关执行何种类型的特殊粘贴的更多详细信息。如果您知道范围(预定义或通过 Workbook_SheetChange
事件中的 Target
),您可以执行撤消操作 (Application.Undo
),在粘贴之前存储单元格值,重做粘贴在目标。如果值已更改,则它不是 "Format Only - Special Paste"。希望这有帮助。