我有一张包含多张工作表的Excel工作簿。大多数工作表在Worksheet_Activate()子例程中都有一些代码。由于某种原因,此代码会导致剪贴板内容丢失 - 非常烦人,因为电子表格用户无法在工作表之间进行复制和粘贴。
为了解决这个问题,我在Worksheet_Activate代码的开头添加了以下几行:
Dim dClipBoard As MsForms.DataObject
On Error Resume Next
Set dClipBoard = New MsForms.DataObject
dClipBoard.GetFromClipboard
在退出Worksheet_Activate代码之前的以下行:
On Error Resume Next
dClipBoard.PutInClipboard
不幸的是,它不起作用。当我从一张纸移动到另一张纸时,我的剪贴板仍然丢失。
答案 0 :(得分:0)
对于这种情况,我可以设想两种不同的解决方法。
1-如果可能,请更改工作表中的代码。无论使用.copy命令,请将其替换为以下代码:
range("Some Range") = range("Some other range")
2-如果无法更改代码(使用您当前使用的方法)而不是将数据存储到MsForms.DataObject,您可以将它们复制到某个辅助工作表,并在退出之前从工作表中检索数据工作表事件触发器。