如何解决PutInClipboard 方法的结果不一致
我有一个电子表格,其中存储了大文本条目,以便有选择地复制并粘贴到另一个应用程序中;我试图为用户设计一种简单的方法来(有选择地)将文本从任何单元格复制到剪贴板,以便他们可以轻松地将其粘贴到另一个应用程序中;同时保护源材料的完整性。
以下代码可以正常工作:
**Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)
Dim OutputObject As DataObject
Dim CellText As String
CellText = Target.Text
Set OutputObject = New DataObject
OutputObject.SetText CellText
OutputObject.PutInClipboard
End Sub**
但是,双击的结果会将单元格指针留在单元格内(在 EDIT 模式下),这会使单元格的内容面临被覆盖的风险。 插入“CANCEL = True”应该通过取消双击的效果来解决问题,让单元格处于 SELECTED 但不在 EDIT 模式下。然而,这会导致剪贴板为空,因为没有任何内容粘贴到外部应用程序(记事本)中。
完全相同的代码——出于某种莫名其妙的原因——在 Worksheet_SelectionChange(ByVal Target As Range) 子例程中没有按预期工作!?!?!
我还尝试在电子表格上创建 ActiveX 按钮;该按钮使用相对方向逻辑来确定要复制哪个单元格的文本,但再次......没有任何内容粘贴到外部应用程序(记事本)中。
有什么想法吗?
解决方法
在事件过程中使用 SendKeys
SendKeys statement
- 您可以将以下内容添加到您的
Worksheet BeforeDoubleClick event
代码中。
代码
With Application
.ScreenUpdating = False
.SendKeys "{ENTER}{UP}"
.ScreenUpdating = True
End With
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。