简短的回答是Application.CutCopyMode = True
要么什么都不做,要么做与你想象的相反的事情。如果 .CutCopyMode 的当前状态为 False,则将其设置为 True 不会打开“跳舞边框”,并且如果当前状态是 xlCopy 或 xlCut (XlCutCopyMode 枚举常量 https://msdn.microsoft.com/en-us/library/office/ff193244.aspx),将 .CutCopyMode 设置为 True 可有效将其关闭。此外,您不能将 .CutCopyMode 设置为 xlCopy 或 xlCut。
长话短说首先要了解其目的是什么Application.CutCopyMode 属性 https://msdn.microsoft.com/en-us/library/office/ff839532.aspx执行以及官方文档错误如何暗示您可以将其重新“打开”。
当您手动剪切 (Ctrl+X) 或复制 (Ctrl+C) 工作表上的一个或多个单元格时,这些单元格将获得一个“跳舞边框”1,指示操作的来源。此时,.CutCopyMode 为非零(xlCopy 或 xlCut),并且后续粘贴操作与 Office 剪贴板和 Windows 剪贴板之间存在关系,因为它们保留源内容。
如果您选择剪切(又名move) 单元格,在将单元格粘贴 (Ctrl+V) 到新位置后立即。CutCopyMode 变为 false,并且您会丢失源周围的“跳舞边框”。这是因为源单元格中没有剩余内容。内容仍可从 Office 剪贴板访问,但已从 Windows 剪贴板中删除。
如果您选择复制单元格,则可以将单元格粘贴到其他位置,并且“跳舞边框”仍然存在。 .CutCopyMode 属性保持非零(例如 xlCopy)。您可以移动到另一个位置并粘贴相同的内容; .CutCopyMode 保持非零,并且原始内容周围的“跳舞边框”仍然存在,与 Office 剪贴板和 Windows 剪贴板的关系也是如此。
如果您运行的 VBA 代码包含Application.CutCopyMode = False
此时,舞动边框将消失,并且任何粘贴操作和 Office 剪贴板之间的连接将被消除。当启动 VBA 子过程时,这是一个很好的状态,这样代码中任何潜在的复制/粘贴操作都不会与 .CutCopyMode 状态发生潜在冲突。然而,这应该只在特殊情况下才有必要(见下一段)。
某些 Excel 操作足以中断此 Office 剪贴板连接并强制 .CutCopyMode 为 False。其中之一是手动启动宏子过程,因此包含在内的好处有限Application.CutCopyMode = False
在代码的开头。但是,如果您的代码已启动范围.复制 https://msdn.microsoft.com/en-us/library/office/ff837760.aspx操作并且您已完成任何工作表.粘贴方法 https://msdn.microsoft.com/en-us/library/office/ff821951.aspx or Range.PasteSpecial 方法 https://msdn.microsoft.com/en-us/library/office/ff839476.aspx对副本内容进行操作。
可以使用一些工作表事件宏代码来检查和报告 .CutCopyMode 的当前状态。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Application.CutCopyMode
Case True
Debug.Print "CutCopyMode is ON"
Case xlCopy
Debug.Print "CutCopyMode is in Copy mode"
Case xlCut
Debug.Print "CutCopyMode is in Cut mode"
Case False
Debug.Print "CutCopyMode is OFF"
Case Else
Debug.Print "???"
End Select
End Sub
报告给 VBE 立即窗口的结果将是复制模式、剪切模式或关闭。 Application.CutCopyMode 永远不会直接将其状态报告为 True²。
虽然您可以通过以下方式改变操作环境Application.CutCopyMode = False
,我一直无法打开.CutCopyModeOn通过将该属性设置为 True。没有抛出错误,官方文档明确指出将属性设置为 True“启动剪切或复制模式并显示移动边框。”但我发现,找回“行进的蚂蚁”的唯一方法是启动另一个复制操作。
因此,出于所有意图和目的,编码Application.CutCopyMode = True
没有什么害处。然而,编码Application.CutCopyMode = False
可以通过放弃剪贴板存储来发挥一些作用。
如果有人can通过操纵来重新打开行进蚂蚁Application.CutCopyMode 属性 https://msdn.microsoft.com/en-us/library/office/ff839532.aspx,我非常希望看到一个例子。
¹ The 'dancing border' is also known colloquially as 'marching ants'.
² While a boolean value of True or False is a distinct type, for all intents and purposes False equals zero and anything that is not False is True. If resolving boolean ► number, a VBA False is 0 and True is always equal to (-1) but if resolving the reverse number ► boolean any non-zero number is considered True and a zero is considered False.