运行宏会影响复制/粘贴(剪贴板)

时间:2017-05-01 15:00:50

标签: vba excel-vba clipboard excel

我意识到我无法复制和粘贴任何内容,因为我的宏存储了其他内容或清理了我的剪贴板。

我的宏与我机器上的其他任务和应用程序“交互”,这并不奇怪,就像关闭num-lock一样;这是SendKeys的结果,您可以阅读here以及此thread。或者正如我所说的,它会影响我的剪贴板或关闭Adobe Acrobat,或者只是在我的机器暂停一段时间后才停在代码中间。我认为这些是正常的,因为它吸收了大量的内存,除了我打印到PDF或编辑图表导致“复杂格式化”的警告错误,Application.DisplayAlerts = False甚至{{1}无法处理}。

除了所有这些之外,我需要在宏运行时编辑报告,并且在运行时我无法复制/粘贴的事实很难忍受。

值得一提的是我需要复制一个范围并粘贴它(不能将范围分配给另一个范围)所以我在我的代码中复制/粘贴。我不确定究竟是什么导致这种情况,所以只是说我的代码中SendKeys {Enter}设置为Application.CutCopyMode

编辑:这是过滤数据并将数据移动到新工作表中的部分:

False

问题:我认为问题是由复制将存储在剪贴板内存中的范围引起的。如果我错了,请纠正我。有没有办法解决这个问题,比如将复制的范围存储在其他地方而不是剪贴板内存中,这样我就可以继续在我的机器上工作了?

P.S。我很清楚选择/激活的缺点。

1 个答案:

答案 0 :(得分:0)

在解决这个问题一段时间后,我意识到如果你需要复制/粘贴范围(而不仅仅是值),这个问题就没有简单的解决方法。

如果您需要移动格式或边框或其他任何内容而不仅仅是值,您应该处理复制/粘贴,这将影响剪贴板,或尝试迭代范围并应用格式。格式如下所示;

Range("Destination1").NumberFormat = VarType(Range("Source1"))
Range("Destination2").NumberFormat = VarType(Range("Source2"))
'...

但如果您不需要它们,那么您可以执行以下操作:

Range("Destination").Value = Range("Source").Value

在格式方面,您也可以将其硬编码在您的模块中:

Range("Destination").NumberFormat = "hh:mm:ss"

所以,基本上你需要将复制/粘贴的内容分解成碎片,避免复制到剪贴板内存没有问题。