我应该在退出子程序之前重新打开 .CutCopyMode 吗?

2024-02-03

为了优化我的代码,我关闭了几个应用程序对象成员 https://msdn.microsoft.com/en-us/library/office/ff198091.aspx特性;尤其是.CutCopyMode 属性 https://msdn.microsoft.com/en-us/library/office/ff839532.aspx.

Sub MyProcedure()
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .CutCopyMode = False
    End With

    ' lots of code here

在我的子程序完成之前,我是否应该与其他人一起重新打开 .CutCopyMode(例如 True)?

    ' lots of code here

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .CutCopyMode = True     '<~~ ???
    End With
End Sub

简短的回答是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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该在退出子程序之前重新打开 .CutCopyMode 吗? 的相关文章

  • 雅虎财经历史股价动力查询返回301响应

    直到今天我的 Excel 2016 power query 都能够从以下 URL 获取历史股票定价数据https finance yahoo com quote AAL history p AAL https finance yahoo c
  • MS Office SaveAs 类型 FileDialog 在 vb 中带有过滤器

    我想创建一个带有过滤器的 另存为 文件对话框 但这似乎无法使用 FileDialog 类 Microsoft Office 12 0 对象库 实现 文档实际上提到了这一点here http msdn microsoft com en us
  • 将单元格背景颜色设置为其包含的 RGB 值。如何?

    下面是我希望通过手动复制和粘贴以外的方式实现的屏幕截图 这是材料设计调色板 在 Excel 中看起来很棒 如何循环遍历范围 B2 B15 并将每个单元格背景颜色设置为其相应的包含颜色 也许是一个VBA loop去经历垂直 B 单元格范围 解
  • 如何用线条在一个Excel散点图中绘制多个分组数据

    我在 Excel 中的一张图表 带线的散点图 中绘制分组数据 按索引 时遇到一些困难 我将非常感谢您的帮助 我的数据分为三列 第一列是数据或组的索引 即每组数据的唯一编号 第二列是时间 第三列是数据 Group Time Data 1 1
  • 将 Excel 文件导入 Access 时更改数据类型

    将 Excel 文件导入 Access 时 有什么方法可以更改默认数据类型吗 顺便说一下 我使用的是 Access 2003 我知道有时我可以自由地将任何数据类型分配给正在导入的每个列 但这只能在我导入非 Excel 文件时进行 EDIT
  • 使用 SpreadsheetLight 进行行计数

    我正在寻找一个类似于 DataTable Rows Count 的函数 它可以与 SLDocument 一起使用来找出有多少行中有数据 SpreadsheetLight 中有可用的东西吗 还有其他方法可以实现这一目标吗 Brendan SL
  • Excel宏-将逗号分隔的条目拆分为新行[重复]

    这个问题在这里已经有答案了 我目前在一张纸上有这些数据 Col A Col B Col C 1 A angry birds gaming 2 B nirvana rock band 我想要做的是将第三列中的逗号分隔条目拆分并插入新行 如下所
  • 如何从包含许多表的 Excel 工作表中解析数据帧(使用 Python,可能使用 Pandas)

    我正在处理布局糟糕的 Excel 工作表 我正在尝试解析这些工作表并将其写入数据库 每个工作表可以有多个表 尽管这些可能的表格的标题是已知的 但哪些表格将位于任何给定的工作表上 它们在工作表上的确切位置也不是已知的 表格不以一致的方式对齐
  • 连续工作表切换循环

    我有一个 Excel 电子表格来显示 SQL 数据图表 这些图表将显示在我们机加工车间的显示器上 该电子表格有 45 个选项卡 我需要在选项卡之间切换 每个选项卡间隔 10 秒 然后返回到第一个选项卡并重复循环 I found 如何使用 V
  • 使用 UiPath 循环 Excel 文件中的 URL

    我尝试了几种方法 但不知怎的 它们看起来不干净 我有一个 Excel 格式的 URL 文件 一列中有 400 多个 URL 我希望 UiPath 从该文件中读取并一一浏览这些 URL 我尝试让 导航到 从从 Excel 读取的变量中读取 但
  • 如何通过VBA代码修复仅在Excel共享模式下发生的运行时错误400

    我真的不知道400错误是什么原因造成的 下面的代码在正常模式下运行得很好 但是一旦我在共享模式下启用 Excel 并尝试使用用户表单 它就会给我 VBA 400 我在这里尝试做的是在向用户显示用户表单后更改形状的文本并禁用其 OnActio
  • Excel动态数组运行重复项计数

    我一直在重新设计一些旧的电子表格工具 以便使用 Excel 的较新工具来过滤和格式化动态数据输出动态数组公式 https support microsoft com en us office dynamic array formulas a
  • VBA C# DLL 未注册

    我制作了一个 C NET dll 我想从 VBA 运行它而不注册它 我找到了解决方案there https stackoverflow com a 13333819并且它可以完美工作 但前提是程序集是使用 Framework NET 3 5
  • 从嵌入的谷歌地图中提取标记坐标

    对此还很陌生 所以请耐心等待 我需要从嵌入的谷歌地图中提取标记坐标 示例链接是http www picknpay co za store search http www picknpay co za store search我想提取搜索时地
  • java.exe 以非零退出值 1 结束

    只是为了开始 我并不是真正尝试从 Android 中的 xlsx 文件中读取单元格 我已经尝试了几乎所有我在 Google 上搜索到的内容 但是每次 在两台不同的 PC 上 都是 Java 1 7 0 79 当我尝试构建 运行 这个应用程序
  • 您可以调整用户窗体的这些代码吗:使其小而高效

    当 userfrom 按以下顺序激活时 我想在运行时添加动态用户表单控件 例如 标签 文本框 我想要类似以下的东西 当用户表单激活时 它需要询问用户字段的数量 他 她想要插入 如果用户回答7 则需要按以下顺序添加字段 3 列顺序 标签1 文
  • 无法使用 Excel JavaScript API 设置 NumberFormat

    我正在使用 Excel Javascript API 在搜索文档后 仍然找不到我想要实现的解决方案 因此 我想将所有内容设置为数字格式 文本 这样 Excel 的自动格式设置就不会与任何单元格的内容混淆 不会删除前导零或更改日期格式 文档建
  • 这个 if 语句中怎么有太多参数

    My IF下面的声明不断错误射击 指出参数太多 为什么是这样 谁能看出下面的语句有什么错误吗 IF G7 EUR H7 1 15 L7 IF G7 USD H7 1 35 L7 IF G7 AUD H7 1 35 L7 IF G7 CAD
  • 关闭工作簿时删除范围,xls vba

    我想要范围 Range A2 G z 关闭工作簿时删除 有人可以帮我处理代码吗 谢谢 凯 这就是我尝试过的 Option Explicit Sub Makro1 insert clipboard Workbooks Pfl SchutzSt
  • 导入到 SQL Server 时忽略 Excel 文件中的列

    我有多个具有相同格式的 Excel 文件 我需要将它们导入 SQL Server 我当前遇到的问题是 有两个文本列我需要完全忽略 因为它们是自由文本 并且某些行的字符长度超出了服务器允许我导入的长度 这会导致截断错误 因为我的分析不需要这些

随机推荐

  • 如何限制画布中的拖放区域

    我有一个画布 假设尺寸为 500x600 我在该画布内有一些控件 用户可以通过拖放重新排列控件 但我想限制该画布内的拖放 例如 画布中有一个按钮 用户可以将该按钮拖放到画布内的任何位置 但是 如果用户尝试将按钮拖出画布边界 则它应该停留在画
  • 仅最后一个值在数组中重复

    我正在尝试在 javascript 中用逗号分隔附加一些值 我有这个查询 select boxes dispatch id projects project boxes hardware sum boxnumber as boxnumber
  • JAX-RS 是构建在 Servlet API 之上的吗?如何?

    我一直在读到 JAX RS 是构建在 servlet 之上的 这是字面意思吗 还是仅仅意味着它是一个更高级别的组件 如果是的话 它是如何运作的 JAX RS 是否创建一个解析请求并手动初始化的 servlet Path带注释的类并将修改后的
  • 从包中导出所有隐藏函数

    有没有一种方法可以自动从包中导入所有隐藏函数 即只能通过以下方式访问的函数package fun 事实上 我对给定函数进行了一些修改 该函数使用了相当多的内部函数 我想避免重新输入package 到处 我在看loadNamespace基本函
  • 使用 LibGDX 的法线贴图 GLSL

    我尝试使用 LibGDX 实现法线贴图 因此 当我在顶点着色器中计算漫反射和镜面反射颜色时 我得到了一些积极的结果 至少我这么认为 顶点着色器 attribute vec4 a position attribute vec2 a texCo
  • CONNECTIVITY_CHANGE 在 Android N 的目标中已弃用 [重复]

    这个问题在这里已经有答案了 我收到关于广播接收器已弃用声明的警告
  • 无法使用 PostgreSQL 配置 AspNet.Identity

    我有一个使用 SQL Server 设置的 Web 项目 现在必须将其迁移到 PostgreSQL 我使用实体框架版本 6 0 和最新版本的 Microsoft AspNet Identity 来管理用户凭据 我正在使用 VS2015 和
  • 如何调用使用 NSClassFromString 动态创建的类中的方法?

    我进行动态类加载的原因是因为我正在创建一组可在多个类似项目中使用的文件 因此执行 import 然后正常实例化是行不通的 动态类允许我执行此操作 只要我可以调用这些类中的方法即可 每个项目在 pch 中都有一个不同的 kMediaClass
  • 为什么应用程序池会自动停止? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我正在使用 IIS 7 0 对我的 MVC 互联网应用程序进行性能测试 有时应用程序池会停止 并且我在浏览器中收到一条错
  • 如何验证 KeyUsage 证书

    我正在尝试验证证书以确保它具有正确的 keyUsage 但不明白如何将我的 X509KeyUsageFlags KeyEncypherment 使用标志指定到此应用程序策略中 这是我到目前为止的代码 还有其他人让这个工作吗 X509Cert
  • 有没有像 Firefox 一样可以保存网站的 Python 脚本?

    当我想保存一些网站时 我厌倦了在 Firefox 中单击 文件 然后单击 页面另存为 Python 有没有脚本可以做到这一点 我想保存图片和css文件 这样当我离线阅读时 它看起来很正常 你可以使用 wget wget m k E 网址 E
  • 如何在 Delphi TStringList 中更快地搜索名称/值对?

    我通过将运行时的所有字符串放入 TStringList 中 在应用程序中实现了语言翻译 procedure PopulateStringList begin EnglishStringList Append CAN T FIND FILE
  • HTTP 失败:java.net.SocketException:套接字关闭改造

    尝试了多种方法仍然面临这个问题 我正在使用 RxJava 和 Retrofit 来完成所有网络操作 下面是我的代码 服务 kt GET v1 contact id fun getContactDetails Path id id Strin
  • upnpx 库的 Apple Mach-O 链接器错误

    我在使用 upnpx 库时遇到一个小问题 我已经下载了该库并打开了 upnpdemo 工作区 我在同一工作区中创建了一个新项目 尝试使用该库创建一个简单的应用程序 我像演示项目一样设置参数 但是 XCode 返回 21 个错误 Apple
  • WPF:列表框取消选择

    当用户单击我的单选中的某个项目时ListBox 该项目被选中 当用户第二次单击某个项目时 除非按住 Ctrl 键 否则不会取消选择该项目 建议将 2 更改为不需要控制键的方法是什么 确保选择模式为Multiple 通过选择多个 您只需单击鼠
  • 使用 _FILES 无法将文件发送到 PHP 服务器

    我正在尝试将值发送到 PHP 服务器 但总是收到 HTTP REsponse 200 并且在我的服务器中我没有收到我发送的值 不知道问题是什么 以下是我的 android 和 PHP 代码片段 有人可以帮忙吗我用这个 抱歉代码太多 我也遵循
  • 如何在Asp.Net Mvc4中检查验证码后传递Email Id值?

    我是使用实体框架的 Asp Net Mvc4 的新手 现在我正在为忘记密码进行验证码验证 作为我的代码 当我单击提交按钮时 即使验证码无效 它也会将电子邮件 ID 值传递给控制器 如果验证码正确 我想将电子邮件 ID 值传递给控制器 否则它
  • ASP.NET 无法编译调试

    我有两台 IIS 服务器计算机 A 和 B 它们都为相同的 ASP NET Web 窗体站点提供服务 在 A 上 当我遇到错误时 我会收到详细的错误页面 其中显示生成异常的源代码 在 B 上 当我遇到错误时 我收到消息 The source
  • rspec:第一次失败后如何继续测试

    我正在使用 rspec 来系统测试设备 该设备是模块化的 因此可以将任意数量的子设备连接到测试装置 我想在很多地方编写测试 这些测试将循环连接的子设备并在每个设备上运行相同的测试 基本上 这就是我想要做的 before all tool d
  • 我应该在退出子程序之前重新打开 .CutCopyMode 吗?

    为了优化我的代码 我关闭了几个应用程序对象成员 https msdn microsoft com en us library office ff198091 aspx特性 尤其是 CutCopyMode 属性 https msdn micr