首先,我在谷歌上找到了一些答案,但是我的 办公网络
封锁了大多数论坛,因此在这里提问!另一个意图是获得用通俗易懂的英语回答 :P
我知道如果我们设置 Application.CutCopyMode = False
,则复制/剪切结果将被清除(即内存将被清空),但应该在什么情况下使用它,什么情况下不使用?有人可以帮忙吗?
首先,我在谷歌上找到了一些答案,但是我的 办公网络
封锁了大多数论坛,因此在这里提问!另一个意图是获得用通俗易懂的英语回答 :P
我知道如果我们设置 Application.CutCopyMode = False
,则复制/剪切结果将被清除(即内存将被清空),但应该在什么情况下使用它,什么情况下不使用?有人可以帮忙吗?
参考此链接(http://www.excelforum.com/excel-programming-vba-macros/867665-application-cutcopymode-false.html),答案如下:
Application.CutCopyMode=False
在宏录制器生成的代码中可见,当您复制/剪切单元格并粘贴时。宏录制器在单独的语句中执行复制/剪切和粘贴操作,并使用剪贴板作为中间缓冲区。我认为Application.CutCopyMode = False
清除了剪贴板。如果没有这行代码,当您关闭带有大量数据的工作簿时,将会收到警告“剪贴板上有大量信息...”。
通过优化的VBA代码,通常可以在一条语句中执行复制/剪切和粘贴操作,因此不使用剪贴板,也不需要Application.CutCopyMode = False
,也不会收到警告。
通常,当您复制单元格时,您会在状态栏中(工作表底部)找到以下语句:
"选择目标并按Enter键或选择粘贴"
然后,按Enter键或选择粘贴将粘贴单元格的值。
如果您没有之后按Esc键,则可以多次粘贴单元格的值。
Application.CutCopyMode = False 执行与按Esc键相同的操作,如果从代码中删除它,则可以再次多次粘贴单元格的值。
如果您未按Esc键关闭Excel,则会收到警告“剪贴板上有大量信息....”
这里有一个很好的解释https://dev59.com/clsX5IYBdhLWcg3wau8r#33833319
根据xlCutCopyMode枚举(https://msdn.microsoft.com/en-us/VBA/Excel-VBA/articles/xlcutcopymode-enumeration-excel),预期值应为xlCopy和xlCut,但0值(在VBA中等同于False)似乎有用于清除放置在剪贴板上的Excel数据。