在Excel中,Application.CutCopyMode属性的功能是什么?

32

首先,我在谷歌上找到了一些答案,但是我的 办公网络 封锁了大多数论坛,因此在这里提问!另一个意图是获得用通俗易懂的英语回答 :P

我知道如果我们设置 Application.CutCopyMode = False,则复制/剪切结果将被清除(即内存将被清空),但应该在什么情况下使用它,什么情况下不使用?有人可以帮忙吗?


3个回答

38

参考此链接(http://www.excelforum.com/excel-programming-vba-macros/867665-application-cutcopymode-false.html),答案如下:

Application.CutCopyMode=False 在宏录制器生成的代码中可见,当您复制/剪切单元格并粘贴时。宏录制器在单独的语句中执行复制/剪切和粘贴操作,并使用剪贴板作为中间缓冲区。我认为Application.CutCopyMode = False清除了剪贴板。如果没有这行代码,当您关闭带有大量数据的工作簿时,将会收到警告“剪贴板上有大量信息...”。

通过优化的VBA代码,通常可以在一条语句中执行复制/剪切和粘贴操作,因此不使用剪贴板,也不需要Application.CutCopyMode = False,也不会收到警告。


有趣,谢谢!在我标记您的答案为接受之前,我会等待更多的评论 :) - Saikat
我在Excel 2010中尝试了这个,但似乎不再起作用了。我已经取消了我的Application.CutCopyMode = False。 - chrips
3
有没有使用 application.CutCopyMode = True 的场景? - DeerSpotter
有人可以展示优化的VBA代码来复制/粘贴这位匿名用户所写的内容吗? - Timo
可能不太明显,但我认为还有一件事情是,你可以将多个内容复制到剪贴板上。如果可能的话,这些都可以通过图形用户界面访问,尽管可能不容易通过代码实现(我不确定)。因此,并不是最后一个代码复制语句简单地替换了剪贴板。它是添加到剪贴板上的。作为最后一个复制操作,它是通常代码粘贴语句所使用的,好像剪贴板的其余内容已经不存在了一样。然而,要真正释放那些旧的内存,请在所需复制语句之前或相关粘贴操作之后的某个时间点执行 Application.CutCopyMode = False。 - Jose_X

16

通常,当您复制单元格时,您会在状态栏中(工作表底部)找到以下语句:

"选择目标并按Enter键或选择粘贴"

然后,按Enter键或选择粘贴将粘贴单元格的值。

如果您没有之后按Esc键,则可以多次粘贴单元格的值。

Application.CutCopyMode = False 执行与按Esc键相同的操作,如果从代码中删除它,则可以再次多次粘贴单元格的值。

如果您未按Esc键关闭Excel,则会收到警告“剪贴板上有大量信息....”


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接