excel - 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”应该通过取消双击的效果来解决问题,使单元格处于选中状态但不在编辑模式下。但是,这会导致剪贴板为空,因为没有任何内容粘贴到外部应用程序(记事本)中。
完全相同的代码——出于某种莫名其妙的原因——在 Worksheet_SelectionChange(ByVal Target As Range) 子例程中不能按预期工作!?!?!
我还尝试在电子表格上创建一个 ActiveX 按钮;该按钮使用相对方向逻辑来确定要复制哪个单元格的文本,但是 AGAIN ...没有任何内容粘贴到外部应用程序(记事本)中。
有什么想法吗?
解决方案
Using SendKeys in an Event Procedure
SendKeys statement
- You could add the following to your
Worksheet BeforeDoubleClick event
code.
The Code
With Application
.ScreenUpdating = False
.SendKeys "{ENTER}{UP}"
.ScreenUpdating = True
End With
推荐阅读
- r - 使用 R 闪亮的应用程序创建箱线图的问题
- gitlab-ci - 赛普拉斯测试后 Gitlab-ci 运行程序挂起
- kubernetes - kubernetes azure 节点超过最大卷数
- reactjs - 如何使用我的后端中使用的前端反应中的 Auth0 访问令牌
- android - 从 Listwiew 回到 MainActivity
- excel - 在 Excel 和 Word 中的 VBA 代码之间传递变量
- java - 如何使用预期的 DTO 测试控制器返回的 JSON?
- javascript - 我必须单击两次才能重新渲染我更新的状态并且回调函数不起作用
- docker - 通过Jenkins启动docker容器时出现Robotframework DatafileError
- algorithm - 如何建立基于间隔重复学习的网站?