【问题标题】:Excel Detect PasteSpecial operationExcel Detect Paste特殊操作
【发布时间】:2016-03-07 08:08:55
【问题描述】:

我正在开发一个评估用户在 Excel 上的技能的软件。 所以用户在 Excel 中做一些操作,正如一系列问题中所问的, 我的工作是使用 Excel COM 对象编写一些程序来验证用户所做的事情。
我能够验证类似的东西;单元格格式、单元格方向、打印区域、字体类型、合并单元格等。但我正在努力验证“选择性粘贴”操作。 我与 WorkSheet 的 Change 事件和 WorkSheet 本身挂钩。所以我可以捕捉到用户所做的 keyStroke 以及单元格的实际格式。 但我无法找到一种方法来判断用户是否使用了“仅格式 - 特殊粘贴”。有没有人可以帮我解决这个问题?

【问题讨论】:

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

标签: c# vb.net excel vba com


【解决方案1】:

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

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

不需要检查实际的击键。

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

【讨论】:

  • 感谢您的意见,您的建议与自定义格式“0,00E+00”等小单元格隐藏格式相结合,可以解决问题
  • 确保在工作表更改事件触发后立即禁用事件检测 (Application.EnableEvents = False),因为一旦您的脚本将值粘贴到单元格,它就会再次触发。这将导致无限循环。完成所有需要后,重新启用事件检测 (Application.EnableEvents = True)。干杯,
  • 其实我的脚本并没有粘贴任何东西,它只是在监控用户在做什么
猜你喜欢
  • 2022-06-16
  • 1970-01-01
  • 2016-03-28
  • 2021-05-19
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
相关资源
最近更新 更多