【发布时间】:2021-01-26 02:17:29
【问题描述】:
我设置了一个电子表格,其中存储了大文本条目,以便选择性地复制并粘贴到另一个应用程序中;我正在尝试为用户设计一种简单的方法来(有选择地)将文本从任何单元格复制到剪贴板,以便他们可以轻松地将其粘贴到另一个应用程序中;始终保护源材料的完整性。
以下代码可以根据需要运行:
**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**
但是,双击的结果将单元格指针留在单元格内(在编辑模式下),这会使单元格的内容面临被覆盖的风险。 插入“CANCEL = True”应该可以通过取消双击的效果来解决问题,使单元格处于选中状态但不处于编辑模式。但是,这会导致剪贴板为空,因为没有任何内容粘贴到外部应用程序(记事本)中。
完全相同的代码——出于某种莫名其妙的原因——在 Worksheet_SelectionChange(ByVal Target As Range) 子例程中不能按预期工作!?!?!
我也尝试在电子表格上创建一个 ActiveX 按钮;该按钮使用相对方向逻辑来确定要复制哪个单元格的文本,但 AGAIN ... 没有任何内容粘贴到外部应用程序(记事本)中。
有什么想法吗?
【问题讨论】:
-
CANCEL = True应该可以解决问题。但是,当然,这一行必须是最后一行。你如何测试和推断剪贴板是空的?它完美地工作......