在Excel VBA中保存/恢复剪贴板

时间:2014-02-18 18:23:21

标签: vba excel-vba excel

我有一张包含多张工作表的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

不幸的是,它不起作用。当我从一张纸移动到另一张纸时,我的剪贴板仍然丢失。

1 个答案:

答案 0 :(得分:0)

对于这种情况,我可以设想两种不同的解决方法。

1-如果可能,请更改工作表中的代码。无论使用.copy命令,请将其替换为以下代码:

range("Some Range") = range("Some other range")

2-如果无法更改代码(使用您当前使用的方法)而不是将数据存储到MsForms.DataObject,您可以将它们复制到某个辅助工作表,并在退出之前从工作表中检索数据工作表事件触发器。